午前と午後をC#で日時にローカライズしようとしています。
C#の「PMDesignator」と「AMDesignator」によって返される値を使用することはどの程度信頼できますか(以下のコードのように)?
同じコードを使用して、以下の両方のシナリオをどのように処理できますか?
//Line# Output
//----- ------
void Main() //1
{ //2
DateTime dt = DateTime.Now; // it is 5:56 PM now //3 it is 5:56 PM now
//4
//Japanese //5
var JapaneseCulture = new System.Globalization.CultureInfo("ja"); //6
Console.WriteLine(JapaneseCulture.DateTimeFormat.PMDesignator); //7 午後
Console.WriteLine(JapaneseCulture.DateTimeFormat.AMDesignator); //8 午前
Console.WriteLine(dt.ToString("t",JapaneseCulture)); //9 17:56
Console.WriteLine(dt.ToString("hh:mm tt",JapaneseCulture)); //10 05:56 午後
//11
//German //12
var GermanCulture = new System.Globalization.CultureInfo("de"); //13
Console.WriteLine(GermanCulture.DateTimeFormat.PMDesignator); //14 (blank)
Console.WriteLine(GermanCulture.DateTimeFormat.AMDesignator); //15 (blank)
Console.WriteLine(dt.ToString("t",GermanCulture)); //16 17:56
Console.WriteLine(dt.ToString("hh:mm tt",GermanCulture)); //17 05:56
}
日本語
-PMDesignator、AMDesignatorには値
がありますが、「t」を使用すると9行目に表示されません。
この場合、10行目で指定された形式( "hh:mm tt")により、より正確な出力が得られます。
ドイツ語
-PMDesignator、AMDesignatorには値がない
ため、16行目のように「t」を使用すると正しい出力が得られますが、
「hh:mmtt」を使用する17行目では誤った出力が得られます。
[編集:コメントを読んだ後:]「t」は「一般的に」使用されるフォーマットをかなり確実に与えますか?(私はローカリゼーションの経験がないので、値がどれほど信頼できるかについてはよくわかりません)