この章では、Perl 言語での時刻と日付の処理を紹介します。
Perl には時間を処理するための関数がいくつかあります。
1. time() 関数: 1970 年 1 月 1 日からの累積秒数を返します。
2. localtime() 関数:ローカルタイムゾーンの時刻を取得します。
3. gmtime() 関数:グリニッジ標準時の取得
次に、引数なしで現在の時刻と日付を返すlocaltime()関数を見てみましょう。
次の 9 つの記号は、さまざまな時刻と日付のパラメーターを表します。
sec、# 秒、0 ~ 61min、# 分、0 ~ 59hour、# 時間、0 ~ 24mday、# days、1 ~ 31mon、# months、0 ~ 11year、# years、1900 から開始 wday、# 曜日、0 -6,0 は日曜日 yday を意味します、 # 年間通算日、0-364,365isdst # 夏時間が有効な場合は True
デモンストレーションの例は次のとおりです。
上記の例の実行出力は次のとおりです。
6月12日日曜日
localtime() を直接呼び出すと、システムの現在のタイムゾーン設定の時刻が返されます。例は次のとおりです。
上記の例の実行出力は次のとおりです。
日時: 2016 年 6 月 12 日 (日) 11:27:31
関数gmtime() はlocaltime() に似ていますが、標準のグリニッジ時間を返します。
上記の例の実行出力は次のとおりです。
現地の日時は: Sun Jun 12 11:32:14 2016GMT 日時は: Sun Jun 12 03:32:14 2016
この例から、中国の時刻はグリニッジ標準時と 8 時間異なることがわかります。
localtime() 関数の 9 つの時間要素を使用して、定式化する必要がある形式の時間を出力できます。フォーマットされた出力では printf() 関数を使用します。
上記の例の実行出力は次のとおりです。
フォーマット時間: HH:MM:SS11:35:23
time() 関数を使用してエポック時間を取得できます。この関数は、1970 年 1 月 1 日からの秒数を返します。例は次のとおりです。
上記の例の実行出力は次のとおりです。
1970 年 1 月 1 日以降の累積秒数: 1465702883
必要な時刻形式を出力できます。
上記の例の実行出力は次のとおりです。
現在日時:2017-3-15 12:47:54 昨日日時:2017-3-14 12:47:54
関数 strftime() を使用すると、時間を希望の形式にフォーマットできます。
次の表に、* 記号は現地時間に依存することを示します。
シンボル | 説明する | 例 |
---|---|---|
%a | 曜日の略称 (Sun..Sat) * | Thu |
%A | 曜日の完全な名前 (日曜日..土曜日) * | Thursday |
%b | 月の略称 (Jan..Dec) * | Aug |
%B | 月の完全な名前 (1 月..12 月) * | 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 桁の数字 ( 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 | 午前または午後を表示 | 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 | ISO 8601 と UTC の間のタイムゾーン オフセット (1 分 = 1、1 時間 = 100) | +100 |
%Z | 現在のタイムゾーンの名前 (「中国標準時」など) * | CDT |
%% | % 記号 | % |
上記の例の実行出力は次のとおりです。
日時 - 2016-06-12 12:15:13 日時 - 2016-06-12 04:15:13