Perlの日付時刻
このセクションでは、我々は処理の日付と時刻のためのPerl言語を紹介します。
Perlは以下の通り処理時間の関数であります:
- 1、時間()関数:1970年1月1日の秒の累積数から復帰します
- 2、関数localtime():ローカルタイムゾーンを取得します。
- 3、関数localtime():GMTを取得
現在の日付と時刻
パラメータなしで現在の日付と時刻を返す関数localtime()を、見てみましょう。
別の日付と時刻のパラメータを表す以下の9つのシンボル:
sec, # 秒, 0 到 61 min, # 分钟, 0 到 59 hour, # 小时, 0 到 24 mday, # 天, 1 到 31 mon, # 月, 0 到 11 year, # 年,从 1900 开始 wday, # 星期几,0-6,0表示周日 yday, # 一年中的第几天,0-364,365 isdst # 如果夏令时有效,则为真
プレゼンテーションの例として次のように:
#!/usr/bin/perl @months = qw( 一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月 ); @days = qw(星期天 星期一 星期二 星期三 星期四 星期五 星期六); ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(); print "$mday $months[$mon] $days[$wday]\n";
上記の出力の実装の例としては、次のとおりです。
12 六月 星期天
次のように現在のシステムタイムゾーンの設定を返しますlocaltimeの直接呼び出し()、場合、例は次のとおりです。
#!/usr/bin/perl $datestring = localtime(); print "时间日期为:$datestring\n";
上記の出力の実装の例としては、次のとおりです。
时间日期为:Sun Jun 12 11:27:31 2016
グリニッジ標準時(GMT)
関数のgmtime()やlocaltimeの()は似ていますが、これは標準グリニッジ標準時を返します。
#!/usr/bin/perl $local_datestring = localtime(); print "本地时间日期为:$local_datestring\n"; $gmt_datestring = gmtime(); print "GMT 时间日期为:$gmt_datestring\n";
上記の出力の実装の例としては、次のとおりです。
本地时间日期为:Sun Jun 12 11:32:14 2016 GMT 时间日期为:Sun Jun 12 03:32:14 2016
ここでは、例、中国と8時間のGMT時間差から見ることができます。
形式の日付と時刻
我々は、開発に必要な時間の出力形式にlocaltimeの()9時間関数要素を使用することができます。 printf()関数を使用してフォーマット出力:
#!/usr/bin/perl ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(); printf("格式化时间:HH:MM:SS\n"); printf("%02d:%02d:%02d", $hour, $min, $sec);
上記の出力の実装の例としては、次のとおりです。
格式化时间:HH:MM:SS 11:35:23
新時代の時間(エポックタイム)
私たちは、この関数は1月1日、秒の1970累積数から返し、時間の新しい時代を得るために、時間()関数を使用することができます。 例としては、次のとおりです:
#!/usr/bin/perl $epoc = time(); print "从1970年1月1日起累计的秒数为:$epoc\n";
上記の出力の実装の例としては、次のとおりです。
从1970年1月1日起累计的秒数为:1465702883
私たちは、出力時刻形式は、我々が望むことができます。
#!/usr/bin/perl ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(); print "当期时间和日期:"; printf("%d-%d-%d %d:%d:%d",$year+1990,$mon+1,$mday,$hour,$min,$sec); print "\n"; $epoc = time(); $epoc = $epoc - 24 * 60 * 60; # 一天前的时间秒数 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($epoc); print "昨天时间和日期:"; printf("%d-%d-%d %d:%d:%d",$year+1990,$mon+1,$mday,$hour,$min,$sec); print "\n";
上記の出力の実装の例としては、次のとおりです。
当期时间和日期:2106-6-12 11:49:28 昨天时间和日期:2106-6-11 11:49:28
POSIX関数strftime()
関数strftime()は、私たちが望む時刻形式としてフォーマットすることができます。
次の表は、書式記号の一部を示し、アスタリスクを使用すると、ローカル時刻に依存したく示しています。
シンボル | 説明 | 例 |
---|---|---|
%a | 週の略語(Sun..Sat)* | Thu |
%A | 週フルネーム(Sunday..Saturday)* | Thursday |
%b | 月の省略形(Jan..Dec)* | Aug |
%B | 月の完全な名前(January..December)* | August |
%c | 日付と時刻* | Thu Aug 23 14:55:02 2001 |
%C | 年100、及び丸め(に加えて、 00-99 ) | 20 |
%d | 月の日( 01-31 ) | 23 |
%D | 日付、 MM/DD/YY に相当%m/%d/%y | 08/23/01 |
%e | スペース数字で埋め月の最初の数日間、( 1-31 ) | 23 |
%F | YYYY-MM-DD に類似速記%Y-%m-%d | 2001-08-23 |
%g | 年の最後の2桁( 00-99 ) | 01 |
%g | 年 | 2001 |
%h | *ショートヶ月(と%b オプション) | Aug |
%H | 24時間制( 00-23 ) | 14 |
%I | 12時間制( 01-12 ) | 02 |
%j | 今年の最初の数日間( 001-366 ) | 235 |
%m | 月( 01-12 ) | 08 |
%M | 分( 00-59 ) | 55 |
%n | 改行文字( '\n' | |
%p | ショーAMまたはPM | PM |
%r | 時刻(hh:mm:ss AMまたはPM)、12時間* | 02:55:02 pm |
%R | 24時間HH:MM 時間形式に等しい%H:%M | 14:55 |
%S | 秒( 00-61 ) | 02 |
%t | 水平タブ( '\t' | |
%T | 時間(24時間クロック)(hh:mm:ss)を、に等しい%H:%M:%S | 14:55 |
%u | 週のISO 8601形式、月曜日は1 ( 1-7 ) | 4 |
%U | 今年の最初の数週間は、日曜日が最初の日である( 00-53 ) | 33 |
%V | ISO 8601の週番号( 00-53 ) | 34 |
%w | 最初の数日(日曜日0)週( 0-6 ) | 4 |
%W | 今年の最初の数週間は、月曜日が初日である( 00-53 ) | 34 |
%x | 日付を表示する形式(mm / dd / yy)* | 08/23/01 |
%X | 表示時間形式* | 14:55:02 |
%y | 、2桁( 00-99 ) | 01 |
%Y | 年 | 2001 |
%z | UTCからのオフセットISO 8601のタイムゾーン(1分= 1、1時間= 100) | +100 |
%Z | *このような「中国標準時」として、現在のタイムゾーンの名前 | CDT |
%% | % シンボル | % |
例としては、次のとおりです:
#!/usr/bin/perl use POSIX qw(strftime); $datestring = strftime "%Y-%m-%d %H:%M:%S", localtime; printf("时间日期 - $datestring\n"); # GMT 格式化时间日期 $datestring = strftime "%Y-%m-%d %H:%M:%S", gmtime; printf("时间日期 - $datestring\n");
上記の出力の実装の例としては、次のとおりです。
时间日期 - 2016-06-12 12:15:13 时间日期 - 2016-06-12 04:15:13