Perl-date-time
Perl-日付と時刻
この章では、Perlで日付と時刻を処理および操作する方法に関する基本的な理解を提供します。
現在の日付と時刻
引数を指定しない場合、現在の日付と時刻の値を返す* localtime()関数から始めましょう。 以下は、リストコンテキストで使用中に *localtime 関数によって返される9要素のリストです-
localtime()関数によって返されるさまざまな要素を印刷するには、次の例を試してください-
上記のコードが実行されると、次の結果が生成されます-
localtime()関数をスカラーコンテキストで使用する場合、システムに設定されている現在のタイムゾーンの日付と時刻が返されます。 現在の日付と時刻を完全な形式で印刷するには、次の例を試してください-
上記のコードが実行されると、次の結果が生成されます-
GMT時間
関数* gmtime()*はlocaltime()関数と同様に機能しますが、返される値は標準のグリニッジ標準時ゾーンにローカライズされます。 リストコンテキストで呼び出された場合、gmtimeによって返される最後の値である$ isdstは常に0です。 GMTには夏時間はありません。
localtime()はスクリプトを実行するマシンの現在の現地時間を返し、gmtime()はグリニッジ標準時(GMT)(またはUTC)を返すことに注意してください。
現在の日付と時刻をGMTスケールで印刷するには、次の例を試してください-
上記のコードが実行されると、次の結果が生成されます-
日付と時刻のフォーマット
localtime()関数を使用して9要素のリストを取得し、後で* printf()*関数を使用して、次のように要件に基づいて日付と時刻をフォーマットできます-
上記のコードが実行されると、次の結果が生成されます-
エポックタイム
time()関数を使用してエポック時間を取得できます。つまり、1970年1月1日のUnixでは、特定の日付から経過した秒数です。
上記のコードが実行されると、次の結果が生成されます-
次のように、指定された秒数を日付と時刻の文字列に変換できます-
上記のコードが実行されると、次の結果が生成されます-
POSIX関数strftime()
POSIX関数* strftime()を使用して、次の表を使用して日付と時刻をフォーマットできます。 アスタリスク()でマークされた指定子はロケールに依存することに注意してください。
Specifier | Replaced by | Example |
---|---|---|
%a
|
Abbreviated weekday name * | Thu
|
%A
|
Full weekday name* | Thursday
|
%b
|
Abbreviated month name * | Aug
|
%B
|
Full month name* | August
|
%c
|
Date and time representation * | Thu Aug 23 14:55:02 2001
|
%C
|
Year divided by 100 and truncated to integer (00-99 )
|
20
|
%d
|
Day of the month, zero-padded (01-31 )
|
23
|
%D
|
Short MM/DD/YY date, equivalent to %m/%d/%y
|
08/23/01
|
%e
|
Day of the month, space-padded (+ 1-31+ )
|
23
|
%F
|
Short YYYY-MM-DD date, equivalent to %Y-%m-%d
|
2001-08-23
|
%g
|
Week-based year, last two digits (00-99 )
|
01
|
%G
|
Week-based year | 2001
|
%h
|
Abbreviated month name* (same as %b )
|
Aug
|
%H
|
Hour in 24h format (00-23 )
|
14
|
%I
|
Hour in 12h format (01-12 )
|
02
|
%j
|
Day of the year (001-366 )
|
235
|
%m
|
Month as a decimal number (01-12 )
|
08
|
%M
|
Minute (00-59 )
|
55
|
%n
|
New-line character ('\n' )
|
|
%p
|
AM or PM designation | PM
|
%r
|
12-hour clock time * | 02:55:02 pm
|
%R
|
24-hour HH:MM time, equivalent to %H:%M
|
14:55
|
%S
|
Second (00-61 )
|
02
|
%t
|
Horizontal-tab character ('\t' )
|
|
%T
|
ISO 8601 time format (HH:MM:SS ), equivalent to %H:%M:%S
|
14:55
|
%u
|
ISO 8601 weekday as number with Monday as 1 (1-7 )
|
4
|
%U
|
Week number with the first Sunday as the first day of week one (00-53 )
|
33
|
%V
|
ISO 8601 week number (00-53 )
|
34
|
%w
|
Weekday as a decimal number with Sunday as 0 (0-6 )
|
4
|
%W
|
Week number with the first Monday as the first day of week one (00-53 )
|
34
|
%x
|
Date representation* | 08/23/01
|
%X
|
Time representation * | 14:55:02
|
%y
|
Year, last two digits (00-99 )
|
01
|
%Y
|
Year | 2001
|
%z
|
ISO 8601 offset from UTC in timezone (1 minute = 1, 1 hour = 100) タイムゾーンを終了できない場合、文字はありません |
+100
|
%Z
|
Timezone name or abbreviation* タイムゾーンを終了できない場合、文字はありません |
CDT
|
%%
|
A % sign
|
%
|
使用法を理解するために、次の例をチェックしましょう-
上記のコードが実行されると、次の結果が生成されます-