文字列形式を使用することで非常に簡単
の上.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();
ちょっと待ってください。キャッチがあります。システムCulture!!、特に異なるカルチャ言語で異なる言語に設定されたウィンドウで実行された同じコードは、異なる結果を生成します。
たとえば、アラビア語に設定されたウィンドウでは、結果は次のようになります。
// 23:12م
مは夕方(مساءの最初の文字)を意味します。
ドイツ語に設定されたウィンドウでは、//23:12duと表示されると思います。
WindowsのコントロールパネルでWindowsの地域と言語->現在の形式(コンボボックス)を変更して変更...適用し、アプリの再構築(実行)を実行して、私が話していることを確認できます。
では、現在のシステムのカルチャが英語に設定されていない場合、英語のイベントで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」を変更できます。各言語のリストがあります。
例:arar-SAアラビア語ar-BHar-BHアラビア語(バーレーン)ar-DZ ar-DZアラビア語(アルジェリア)ar-EG ar-EGアラビア語(エジプト)....。