« 2009年に印象に残った展覧会 | メイン

May 17, 2010

icu4j で和暦の parse

何回かやってるんだけど、忘れてしまうのでメモ。

IBM の国際化ライブラリ ICU のは、数値や通貨やカレンダーの国際化に役立つライブラリ。Java 用には icu4j がある。博物館のデータではあちこちに和暦が登場するのだけれど、西暦に変換したいこともよくある。で、Java SE 6 では JapaneseCalendar で元号がサポートされたとはいえ、明治以降だけなので全然使えません。というわけで、icu4j を使って日本の元号で書かれた年代を西暦(グレゴリオ暦)の普通の日付に変換するコード。

	JapaneseCalendar jcal = new JapaneseCalendar();
	DateFormatSymbols dfs = new DateFormatSymbols(jcal, Locale.JAPANESE);
	DateFormat sdf = new SimpleDateFormat("Gy年M月d日", dfs);
	sdf.setCalendar(jcal);
	Date date = sdf.parse("天保11年1月1日");
	System.out.println(date);

結果は、

	Wed Jan 01 00:00:00 JST 1840

と。ただこれ、元号だけでいわゆる旧暦(太陰太陽暦)のことは、というかつまり月日までは考えてません。自分の仕事ではそこはあまり問題になることがないので…。

投稿者 ryoji : May 17, 2010 05:30 PM

トラックバック

このエントリーのトラックバックURL:
http://ryoji.sakura.ne.jp/mt/mt-tb.cgi/357