Windows は、和暦表示に設定することができます。
タスクバーが和暦表示になりました!
ここで 1 つ問題になるのが…
.NET Framework での日付の文字列化です。
using System;
namespace ConsoleApp18
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(DateTime.Now.ToString("yyyy/MM/dd"));
}
}
}
実行結果
01/06/05
続行するには何かキーを押してください . . .
これ固定で西暦になると思っていたら、ならないのです…
C 言語の strftime のように、%Y 世紀部分を含めた ( 4 桁の) 西暦年。
と明示されていれば良いのですが…
.NET Framework の "yyyy" カスタム書式指定子 には 年
とだけ書いてあります。
ここでは西暦年を表示するための書き換え案だけ、記録のために残していきます。
Console.WriteLine(DateTime.Now.ToString("yyyy/MM/dd"));
// ↓
Console.WriteLine(DateTime.Now.ToString("yyyy/MM/dd", CultureInfo.InvariantCulture));
Console.WriteLine(string.Format("{0:yyyy/MM/dd}", DateTime.Now));
// ↓
Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "{0:yyyy/MM/dd}", DateTime.Now));
Console.WriteLine($"{DateTime.Now:yyyy/MM/dd}");
// ↓
Console.WriteLine(((IFormattable)$"{DateTime.Now:yyyy/MM/dd}").ToString(null, CultureInfo.InvariantCulture));
個別にではなく、アプリケーション全体に西暦を適用したい場合
var ja = new CultureInfo("ja-JP", true);
ja.DateTimeFormat.Calendar = new GregorianCalendar(GregorianCalendarTypes.Localized);
Thread.CurrentThread.CurrentCulture = ja;