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