目次 †内容 †Unix時間から普通の書式へ †use strict; use warnings; use Scalar::Util( "looks_like_number" ); my $utime = 1203390349; my $diff = 9; # 時差 print convertUtime( $utime, $diff ) || "not utime"; sub convertUtime { my $utime = shift; my $diff = shift; return unless ( ( Scalar::Util::looks_like_number( $utime ) ) ); my( $sec, $mit, $hour, $mday, $mon, $year, $wday ) = gmtime( $utime + $diff * 3600 ); $year += 1900; $mon++; my $date = sprintf( "%04d/%02d/%02d", $year, $mon, $mday ); my $time = sprintf( "%02d:%02d:%02d", $hour, $mit, $sec ); return "$date $time"; } RFC#822の解析 †メールの日付をパースしたい Sat, 06 Oct 2007 14:38:58 +0900 (JST) Date::Calc は使えなかった #!/usr/bin/perl -w use strict; use warnings; use Data::Dumper; use Date::Calc("Parse_Date"); my $date = "Sat, 06 Oct 2007 14:38:58 +0900 (JST)"; my @dateParsed = Parse_Date($date); print Dumper(\@dateParsed); Date::Manip は使えた(PurePerlなので遅い?) #!/usr/bin/perl -w use strict; use warnings; use Data::Dumper; use Date::Manip; my $date = "Sat, 06 Oct 2007 14:38:58 +0900 (JST)"; my @dateField = qw(%Y %m %d %H %M %S); my @dateParsed = UnixDate(ParseDate($date),@dateField); print Dumper(\@dateParsed); HTTP::Date も使えそう(XSなので高速?) #!/usr/bin/perl -w use strict; use warnings; use Data::Dumper; use HTTP::Date("parse_date"); my $date = "Sat, 06 Oct 2007 14:38:58 +0900 (JST)"; my @dateParsed = parse_date($date) ; print Dumper(\@dateParsed); |