java.timeパッケージで和暦→西暦への変換
2019年1月12日土曜日
1.やりたいこと
java.timeパッケージに新しく追加されたYearクラスのインスタンスを、和暦を用いて生成したい
2.躓いたところ
JapaneseDate→LocalDateと似たようなノリでJapaneseEra→Yearが取得できないかなーと考えたところ、JapaneseYearみたいなクラスはないので直接に変換はできないことがわかった。
じゃあ適当に1月1日を経由すればいいんじゃないのかと考えて以下のコードを作成したところ、たまにエラーが生じる。
def createYearWithJapaneseEra(era: JapaneseEra, year: Int): Year = Year.from(JapaneseDate.of(era, year, 1, 1))
なぜかと思って確認していみると、平成元年に毎度死んでいることがわかった。平成元年には1月1日が存在しないので、エラーしていたらしい。
3.解決方法
JapaneseChronology使いましょう。
def createYearWithJapaneseEra(era: JapaneseEra, year: Int): Year = Year.of(JapaneseChronology.INSTANCE.prolepticYear(era.javaEra, year))
proplepticYearは年数を返してくれるので、これを用いてYearを生成するとほしいものが得られるというわけです。
コメント
0 件のコメント :
コメントを投稿