5

次のコード:

DateTime dt = new DateTime(2013, 9, 13, 14, 34, 0);
string s = dt.ToString("MM/dd/yyyy");

textBox1.AppendText(DateTime.Now + "\n");
textBox1.AppendText(s + "\n");
textBox1.AppendText(dt.ToString() + "\n");

テキストボックスに次の出力が生成されます。

13.09.2013 1441.28
09.13.2013
13.09.2013 1434.00

出力の最初の行から、私の PC の地域設定では、日付/時刻が としてフォーマットされていることが明らかですdate.month.year HHmm.ss

出力の 2 行目はわかりにくいです。MM/dd/yyyy変数に formatを指定しましたsが、DateTimeオブジェクトは としてフォーマットされMM.dd.yyyyます。なんで?

これは、.NET Framework 4 上の C# WPF プログラムです。

4

1 に答える 1

7

/現在のカルチャの日付区切り記号のプレースホルダーです。セパレーターとして強制する場合は、次を指定する必要がありますCultureInfo.InvariantCulture

string s = dt.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);

参照: 「/」カスタム書式指定子

適切なローカライズされた日付区切り記号は DateTimeFormatInfo.DateSeparator、現在または指定されたカルチャのプロパティから取得されます。


stringto をパースしたい場合も同様ですDateTime

FormatException以下は、現在のカルチャの実際の日付区切り記号が でない場合にスローし/ます。

DateTime.ParseExact("09/13/2013", "MM/dd/yyyy", null);  

常に動作します:

DateTime.ParseExact("09/13/2013", "MM/dd/yyyy", CultureInfo.InvariantCulture);
于 2013-09-13T08:47:32.533 に答える