Excel で和暦の日付は次のように表される。
書式: [年号][年].[月].[日]
例 : H22.10.26
S64.1.7
これを Perl で扱おうと思って DateTime オブジェクトを扱うスクリプト書いた。
#!/usr/bin/perl
use utf8;
use strict;
use warnings;
use DateTime::Format::Strptime;
my $fmt = new DateTime::Format::Strptime(
pattern => "%Y/%m/%d",
);
my $平成 = $fmt->parse_datetime( "1989/1/8" );
my $昭和 = $fmt->parse_datetime( "1926/12/25" );
my $大正 = $fmt->parse_datetime( "1912/7/30" );
my $明治 = $fmt->parse_datetime( "1868/10/23" );
sub to_jp {
my $d = shift;
$d or return "";
my $y = $d >= $平成 ? "H" . ( $d->year - $平成->year + 1 ) :
$d >= $昭和 ? "S" . ( $d->year - $昭和->year + 1 ) :
$d >= $大正 ? "T" . ( $d->year - $大正->year + 1 ) :
$d >= $明治 ? "M" . ( $d->year - $明治->year + 1 ) :
$d->year;
sprintf "%s.%d.%d", $y, $d->month, $d->day;
}
for my $i (qw! 2010/10/26 1989/1/7 !) {
my $dt = $fmt->parse_datetime( $i );
print to_jp( $dt ) . "\n";
}
$ perl test.pl
H22.10.26
S64.1.7
Continue reading →