https://metacpan.org/release/Date-Calc
perlで日付や時刻を扱う場合、Date::Calc を使用していますが、 2015/3以降、メンテナンスが止まっているようです。
殆どの場合、Date::Calc で足りていますが、 日付&時刻な文字列をparseする必要がある場合、困ることがあります。
そんなときは...、「DateTime::Format::~ 」シリーズとして、
- DateTime::Format::Strptime
- DateTime::Format::HTTP
- DateTime::Format::Mail
- DateTime::Format::Japanese
があります。
これを機会に Date::Calc → DateTime へ移行した方がよいのかもしれませんね。
以下、ざっと書いたサンプル
#!/usr/local/bin/perl use strict; use warnings; use Data::Dumper; use DateTime::Format::Strptime; use DateTime::Format::HTTP; use Data::Dumper; my $TIME_OFFSET_MIN = 1; main(); sub main { print "TIME: ",time(),"\n"; my $str_1 = '2019/01/18 18:02:22'; my $parser_1 = DateTime::Format::Strptime->new(pattern=>"%Y/%m/%j %H:%M:%S", time_zone=>'Asia/Tokyo'); my $date_1 = $parser_1->parse_datetime($str_1); $date_1->add(minutes => $TIME_OFFSET_MIN); # print Dumper($date_1); print $date_1->datetime,"\n"; my $str_2 = 'Fri, 18 Jan 2019 10:02:22 GMT'; my $date_2 = DateTime::Format::HTTP->parse_datetime($str_2); print $date_2->datetime,"\n"; # 時刻比較 print DateTime->compare( $date_1, $date_2 ), "\n"; }
ちなみに、unix timeからの DateTime オブジェクト作成は以下
my $date_nas = DateTime->from_epoch( epoch =>$unix_time);