PerlでRFC2822形式の日時をUNIXタイムスタンプにする方法
調べても見つからなかったから、書いてみた。
PHPならstrtotimeで済むんだけど。
use DateTime::Format::Mail; use Time::Local; my $date = "Thu, 14 Feb 2008 19:14:01 +0900"; $date =~ s/\(.*//; # 最後に(JST)などがついている時のための対策 my $datetime = DateTime::Format::Mail->parse_datetime($date); my $year = substr($datetime,0,4); my $mon = int(substr($datetime,5,2)); my $mday = int(substr($datetime,8,2)); my $hours = int(substr($datetime,11,2)); my $min = int(substr($datetime,14,2)); my $sec = int(substr($datetime,17,2)); my $time = timelocal($sec,$min,$hours,$mday,$mon - 1,$year);
DateTime::Format::Mailの使い方はこれで正しいのだろうか。