質問: System.DateTime.Now; System.Console.WriteLine(now); // 和暦の出力方法 System.Console.WriteLine(now.ToString("ggyy年MM月dd日HH時mm分ss秒", culture)); } ``` }
回答: コンピューターのタイムゾーンが希望通りに設定されていないようです。unaristさんも答えられていますが、Windowsの場合はタイムゾーン一覧をレジストリから取得し、UNIX系の場合はtzinfoを使うようですので、指定の仕方が異なります。 面倒に感じる場合、日本標準時が+9時間であることを前提に ``` // UTC時刻に対して9時間ずらす var now = DateTimeOffset.UtcNow.ToOffset(TimeSpan.FromHours(+9)); ``` と書くことができます。 ついでに表示方法についても2,3種類 文字列化の際に個別に指定する方法 ``` var cultureInfo = new CultureInfo("ja-JP"); cultureInfo.DateTimeFormat.Calendar = new JapaneseCalendar(); Console.WriteLine(now.ToString("gg yy年MM月dd日HH時mm分ss秒", cultureInfo)); ``` スレッドに対して書式を設定する方法 ``` CultureInfo.CurrentCulture = new CultureInfo("ja-JP"); CultureInfo.CurrentCulture.DateTimeFormat.Calendar = new JapaneseCalendar(); Console.WriteLine("{0:gg yy年MM月dd日HH時mm分ss秒}", now); Console.WriteLine($"{now:gg yy年MM月dd日HH時mm分ss秒}"); ``` 最後の行は補間文字列というものです。