日付の書式指定
strftimeを使います。
use POSIX 'strftime'; my $now = strftime "%Y/%m/%d %H:%M:%S", localtime; print $now, "\n";日付だけであればDate::Simpleモジュールでも取得できます。
use Date::Simple;
my $date = Date::Simple->new();
print $date->format('%Y/%m/%d'), "\n";
使える書式文字列はプラットフォームによって異なります。代表的なものを以下に書いておきます。| 意味 | 例 | |
|---|---|---|
| %a | 現在のロケールにおける曜日の省略名。 | Sat |
| %A | 現在のロケールにおける曜日の完全な名前。 | Saturday |
| %b | 現在のロケールにおける月の省略名。 | Nov |
| %B | 現在のロケールにおける月の完全な名前。 | November |
| %c | 現在のロケールにおいて一般的な日付・時刻の表記。 | Wed Dec 11 20:53:28 2002 |
| %C | 西暦年の上2桁 | 20 |
| %d | 日(01-31)。 | 11 |
| %D | %m/%d/%yと同じ。 | 12/11/02 |
| %e | 日( 1-31)。(1桁の場合10の位は0ではなくスペースになる) | 9 |
| %F | %Y-%m-%dと同じ。 | 2002-12-11 |
| %h | %bと同じ。 | Dec |
| %H | 24時間表記での時(00-23)。 | 20 |
| %I | 12時間表記での時(01-12)。 | 8 |
| %j | 年の初めから通算の日数(001-366)。 | 345 |
| %k | 24時間表記での時(00-23)。(1桁の場合10の位は0ではなくスペースになる) | 1 |
| %l | 12時間表記での時(01-12)。(1桁の場合10の位は0ではなくスペースになる) | 1 |
| %m | 月(01-12)。 | 12 |
| %M | 分(00-59)。 | 57 |
| %n | 改行 | |
| %p | 現在のロケールにおける「午前」「午後」に相当する文字列。 | PM |
| %P | %pと同じですが、小文字。 | pm |
| %s | 1970/01/01 00:00:00 UTC からの秒数。 | 1039607864 |
| %S | 秒(00-61)。 | 44 |
| %t | タブ | |
| %T | %H:%M:%Sと同じ。 | 20:57:44 |
| %u | 週の何番目の日か(1-7)。月曜日を1とする。 | 3 |
| %U | 年の初めからの通算の週数(00-53)。その年の最初の日曜日を第1週の始まりとする。 | 49 |
| %V | ISO 8601:1988形式での年の始めからの週数(00-53)。その年に少なくとも4日以上含まれる最初の週を1として計算する。週の始まりは月曜日とする。 | 50 |
| %w | 週の何番目の日(0-6)か。日曜日を0とする。 | 3 |
| %W | 年の初めからの通算の週数(00-53)。その年の最初の月曜日を第1週の始まりとする。 | 49 |
| %x | 現在のロケールで一般的な日付表記。 | 12/11/02 |
| %X | 現在のロケールで一般的な時刻表記。 | 20:57:44 |
| %y | 西暦の下2桁(00-99)。 | 02 |
| %Y | 西暦(4桁)。 | 2002 |
| %z | タイムゾーンのGMTへのオフセット時間。 | +0900 |
| %Z | タイムゾーン名。 | JST |
| %% | % | % |
