目次

内容

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);

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-09-25 (日) 19:27:03 (444d)