perlで和暦-西暦を相互変換するには、Date::Japanese::Eraを使用します。
http://search.cpan.org/~miyagawa/Date-Japanese-Era-0.06/lib/Date/Japanese/Era.pm
西暦から和暦
my @date_strings = ([1970,1,1], [2009,1,1]); for my $date_str ( @date_strings ){ my $era = Date::Japanese::Era->new( @$date_str ); #西暦から和暦へ my $nengou = encode("sjis", $era->name ); my $jp_year = $era->year; print join('/',@$date_str )," -> $nengou $jp_year\n"; }
実行結果
1970/1/1 -> 昭和 45 2009/1/1 -> 平成 21
和暦から西暦和暦
和暦から西暦和暦への変換では、「昭和五十二年」のような漢数字も認識します。
my @date_strings = (['昭和五十二年'], #漢数字もOK ['昭和52年'], ['昭和52年'], ['昭和', 52]); for my $date_str ( @date_strings ){ my @date_str_org = @$date_str; $date_str->[0] = decode("sjis",$date_str->[0]); my $era = Date::Japanese::Era->new(@$date_str); my $gr_year = $era->gregorian_year; #和暦から西暦へ print join(',',@date_str_org )," -> $gr_year\n"; }
実行結果
昭和五十二年 -> 1977 昭和52年 -> 1977 昭和52年 -> 1977 昭和,52 -> 1977