.NETで日付を和暦または西暦に変換する [C#, Visual Basic]

和暦表示が必要なシステムの書類

最近のシステムでは、日付を扱う際には西暦を使用して和暦は使用しないものが増えてきました。

しかし、国や自治体に提出書類などには、西暦ではなく和暦での表示、出力が必要になりますので、そういったものを扱うシステムでは和暦での日付変換は必須になります。

そこで今回は、.NETで日付を和暦に変換、または西暦に変換する方法について紹介します。

和暦に変換する.NETのクラス

和暦に関する情報は、System.Globalization名前空間にあるJapaneseCalendarクラスを利用することで取得できます。

JapaneseCalendarクラスを使用することで和暦(元号)データを扱うことができるようになります。

JapaneseCalendarクラスは、System.Globalization名前空間にあるCalendarクラスを継承して実装されています。

DateTime構造体から和暦(元号)を取得する

和暦に用いる元号は、JapaneseCalendarクラスのGetEraメソッドで取得することができます。

C#

Visual Basic

ここでは、GetEraYearというメソッドを作成して、和暦年(元号付きの年)の文字列を生成して返しています。

.NETで取得できる元号は明治から令和の範囲になります。
各元号の開始日と終了日は、次のようになります。

各元号の開始日~終了日

明治
1868年9月8日 ~ 1912年7月29日

大正
1912年7月30日 ~ 1926年12月24日

昭和
1926年12月25日 ~ 1989年1月7日

平成
1989年1月8日 ~ 2019年4月30日

令和
2019年5月1日 ~ 9999年12月31日

DateTime構造体を和暦の日付文字列に変換する

DateTime構造体を和暦の日付文字列に変換するには、JapaneseCalendarクラスに加えて、JapaneseCalendarクラスと同じ名前空間のSystem.GlobalizationにあるCultureInfoクラスを使用します。

CultureInfoクラスは、各地域の文化情報を操作するためのクラスです。
日本の情報を得るためには、CultureInfoクラスのコンストラクタに「ja-JP」を指定してインスタンスを生成します。

生成したCultureInfoクラスのインスタンスのカレンダーに

C#

Visual Basic

DateTime構造体をToStringメソッドで文字列に変換する際に、CultureInfoクラスのインスタンスを引数指定することで和暦日付に変換することができます。

CultureInfoクラスとJapaneseCalendarクラスを使用することで、和暦日付の文字列をDateTime構造体に変換することもできます。

C#

Visual Basic

和暦日付の文字列をDateTime構造体に変換する際は、DateTime構造体のTryParseExactメソッドを使用します。