文字列形式を使用することで非常に簡単
の上.ToString("") :
例:23:12から11:12 Pmへの変換:
DateTime d = new DateTime(1, 1, 1, 23, 12, 0);
var res = d.ToString("hh:mm tt"); // this show 11:12 Pm
var res2 = d.ToString("HH:mm"); // this show 23:12
Console.WriteLine(res);
Console.WriteLine(res2);
Console.Read();
ちょっと待ってください。他のことを気にする必要があるのはシステムカルチャーだけではありません。他の言語のウィンドウで同じコードを実行すると、特に異なるカルチャ言語の場合、同じコードで異なる結果が生成されるためです。
アラビア語の言語文化に設定されたウィンドウの例は、次のように表示されます。
// 23:12م
مは夕方(مساءの最初の手紙)を意味します。
別のシステムカルチャでは、Windowsの地域および言語オプションに設定されている内容に応じて、//23:12duと表示されます。
Windowsの地域および言語->現在の形式(コンボボックス)の下のWindowsコントロールパネルで異なる形式を変更して変更できます...適用してアプリの再構築(実行)を行い、iamが話していることを確認します。
それで、現在のシステムの文化が英語に設定されていない場合、誰が英語のイベントでAmとPmの単語を強制的に表示できますか?
2行追加するだけで簡単:->
using System.Globalization;
最初のステップは、コードの上に追加します
前のコードを次のように変更します。
DateTime d = new DateTime(1, 1, 1, 23, 12, 0);
var res = d.ToString("HH:mm tt", CultureInfo.InvariantCulture); // this show 11:12 Pm
InvariantCulture=>デフォルトの英語形式を使用します。
別の質問英語(または他の言語)の地域形式に設定されたウィンドウを使用している場合でも、午後をアラビア語または特定の言語にしたいですか?
アラビア語の例の解決策:
DateTime d = new DateTime(1, 1, 1, 23, 12, 0);
var res = d.ToString("HH:mm tt", CultureInfo.CreateSpecificCulture("ar-AE"));
これは//23:12を表示します
システムが英語のリージョン形式に設定されている場合はイベント。別の言語形式にしたい場合は、「ar-AE」を変更できます。各言語とその形式のリストがあります。
例:
ar ar-SA Arabic
ar-BH ar-BH Arabic (Bahrain)
ar-DZ ar-DZ Arabic (Algeria)
ar-EG ar-EG Arabic (Egypt)
big list...
別の質問がある場合はお知らせください。