名前¶
Date::Japanese::Era - 和暦と西暦の相互変換
概要¶
use Date::Japanese::Era;
# グレゴリア暦から (月と日が必須)
$era = Date::Japanese::Era->new(1970, 1, 1);
# 和暦から
$era = Date::Japanese::Era->new('昭和', 52);
$name = $era->name; # '昭和' in EUC-jp (default)
$gengou = $era->gengou; # 同上
$year = $era->year; # 52
$gregorian = $era->gregorian_year; # 1977
# JIS X0301 テーブルを変換に使用する
use Date::Japanese::Era 'JIS_X0301';
説明¶
Date::Japanese::Era は和暦と西暦(グレゴリア暦)の相互変換を行うモジュー ルです。
メソッド¶
- codeset
-
$codeset = Date::Japanese::Era->codeset; Date::Japanese::Era->codeset($encoding);
和暦の文字エンコーディングを設定/取得します。例えば以下のコードでは、 和暦の入出力は UTF-8 エンコードされます。
Date::Japanese::Era->codeset('utf8'); $era = Date::Japanese::Era->new($name, $year); # $name は UTF-8 print $era->name; # これも UTF-8
この機能を利用するには Jcode モジュールが必要です。ない場合には codeset() の呼び出しは、warning が出力され、無視されます。
- new
-
$era = Date::Japanese::Era->new($year, $month, $day); $era = Date::Japanese::Era->new($era_name, $year);
あたらしく Date::Japanese::Era クラスのインスタンスを生成します。グレ ゴリア暦から生成する場合には、月と日が必須です。グレゴリア暦からの変換 には Date::Calc が必要です。
元号名は日本語か ASCII のどちらでもかまいません。Jcode モジュールがイ ンストールされている場合は、エンコードを codeset() で設定できます。デ フォルトは EUC-JP です。
入力が不正な場合(たとえば、元号と年の存在しない組合せや、存在しない元 号名など)、例外が投げられます。
- name
-
$name = $era->name;
元号名を日本語で返します。エンコーディングは codeset() で設定できます。 デフォルトは EUC-JP です。
- gengou
-
name() の別名です。
- name_ascii
-
$name_ascii = $era->name_ascii;
元号名を US-ASCII で返します。
- year
-
$year = $era->year;
年を和暦で返します。
- gregorian_year
-
$year = $era->gregorian_year;
年をグレゴリア暦で返します。
例¶
# 2001年は H-13
my $era = Date::Japanese::Era->new(2001, 8, 31);
printf "%s-%s", uc(substr($era->name_ascii, 0, 1)), $era->year;
# 西暦に変換
my $era = Date::Japanese::Era->new('平成', 13);
print $era->gregorian_year; # 2001
CAVEATS¶
元号が変わった日は新しい方(後の方)の元号で扱われます。
現状サポートしているのは「明治」以降です。
もし現在の元号(平成)が変わった場合、Date::Japanese::Era::Table をアッ プグレードする必要があります。(Table はグローバル変数として定義してあ るので、必要なら上書きすることとも出来ます)
TODO¶
日付パラメータはいろんなフォーマットがありえます。Date::Simple などで 置き換えるべきかもしれません。
もっと前の元号もサポート。
作者¶
Tatsuhiko Miyagawa <[email protected]>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.