Home > tips > 日時や時間を文字列で取得

日時や時間を文字列で取得

日時を文字列で取得する場合、

my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
$date = sprintf("%04d/%02d/%02d", $year+1900, $mon+1, $mday);

こんな書き方が多いですが、もっと短くこう書けます。

use POSIX;
my $date = strftime("%Y/%m/%d", localtime);

DateTime モジュールで同じことができますが、POSIX は標準モジュールなのでインストールしなくても使えるというのが強みです。Windows の Strawberry Perl でも使えました。

と、これだけなら大した事無い違いなのですが、strftime はもっと便利です。

ロケール設定の LC_TIME の値によって、曜日や月名の文字列も取得できます。

環境変数 LANG もしくは、LC_TIME に、ja_JP.eucJP や、ja_JP.UTF-8 を指定すれば、

strftime("%x", localtime) → 2008年12月16日
strftime("%X", localtime) → 20時30分03秒
strftime("%a %R",localtime) → 火 20:34
strftime("%p %I:%M",localtime)' → 午後 08:37

というような結果が取得できます。一行で済んでしまうのでかなり便利です。

tips

  1. コメントはまだありません。
  1. No trackbacks yet.