月名を英語や他の外国語表記にしたり、曜日名を日本語表記にしたり、和暦での年号を付記したりするには、書式を指定した文字列化や特定カルチャの指定を行うことで出来ます。
DateTime/DateTimeOffsetの値を西暦・和暦の表記で文字列化する
using System;
using System.Globalization;
class Sample {
static void Main()
{
var dt1 = new DateTime(2019, 4, 30); // 2019年4月30日
var dt2 = new DateTime(2019, 5, 1); // 2019年5月1日
// ja-JPのCultureInfoを作成
var jajp = new CultureInfo("ja-JP");
// カルチャを指定して文字列化
Console.WriteLine(dt1.ToString("gg yyyy", jajp)); // 年号+年4桁
Console.WriteLine(dt2.ToString("gg yyyy", jajp));
Console.WriteLine();
// JapaneseCalendarで定義される日付と時刻の書式を使用するように変更
jajp.DateTimeFormat.Calendar = new JapaneseCalendar();
// JapaneseCalendarに変更したカルチャを指定して文字列化
Console.WriteLine(dt1.ToString("gg yyyy", jajp)); // 年号+年4桁
Console.WriteLine(dt2.ToString("gg yyyy", jajp));
}
}
実行結果例
西暦 2019 西暦 2019 平成 31 令和 01
この点について詳しくは日時・文字列の変換と書式で解説します。 以下のページと合わせてご覧ください。