日時を取得したいとき、PHP の場合 date() を使えば良いが、Perl では様々な方法があるのでまとめておく。今回は例として
2013/06/04 00:51:23
という書式で日時を取得する。
qx(date)
qx() で UNIX OS の date コマンドを叩く方法。ダメな大人が使う手法であり、良い子は真似してはいけない。サブシェルが起動する、PATH が通ってないと使えないなど良いことなし。
print qx(date "+%Y/%m/%d %H:%M:%S");
localtime()
localtime() を使う、昔ながらの方法。特にデメリットはなさそうだが、なんとなくかっこ良くない。
my ($sec, $min, $hour, $mday, $mon, $year) = (localtime(time))[0..5];
printf("%d/%02d/%02d %02d:%02d:%02d\n",
$year + 1900, $mon + 1, $mday, $hour, $min, $sec);
POSIX::strftime()
POSIX::strftime() で書式を指定する方法。
use POSIX qw(strftime);
print strftime("%Y/%m/%d %H:%M:%S", localtime(time)) . "\n";
Time::Piece
Time::Piece を使う方法。Perl >= 5.10 の標準モジュールであり、特にインストールはいらない。localtime が上書かれる。
use Time::Piece;
my $t = localtime;
print $t->ymd("/") . " " . $t->hms . "\n";
DateTime
DateTime モジュールを使う方法。あらかじめモジュールを入れておく必要がある。cpanm を使うなら
$ cpanm DateTime
で入る。高機能だが重いらしい。
use DateTime;
my $dt = DateTime->now();
print $dt->ymd("/") . " " . $dt->hms . "\n";
ご利用は計画的に。
コメント