Perlにおける各種日付フォーマットの変換と比較

日付の比較がだるい。Time::Localをつかって、timelocalで秒に変換してとかやっていたけど今の時代はそうじゃないだろうと思いGoogleで探したらやはりあった。Perlコミュニティすごい。

自分が扱いたい日付フォーマットをPerl DateTime Wiki: Modulesから探して、インストール。その後使う。基本形は

日付を読み込むとき

my $dt = DateTime::Format::Hogehoge->parse_datetime('YYYY-MM-DD hh:mm:ss');

処理後の$dtを特定のフォーマットで出力するとき、

my $str = DateTime::Format::Hogehoge->format_datetime($dt);

比較は普通の比較演算子で行えるみたい。あるフォーマットで表現された日付文字列$date1と$date2を比較するとき。

my $dt1 = DateTime::Format::Hogehoge->parse_datetime($date1);
my $dt2 = DateTime::Format::Hogehoge->parse_datetime($date2);

if ($dt1 < $dt2){
 ...
}
else{
 ....
}

Debian系でこのモジュールを探すならば以下のコマンドで探してみては?

% aptitude search perl | grep datetime