Perl で日時を取得する方法あれこれ

スポンサーリンク

日時を取得したいとき、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";

ご利用は計画的に。

コメント

タイトルとURLをコピーしました