将DateTime格式化为字符串

Don*_*alo 5 c# wpf datetime string-formatting

以下代码:

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");
Run Code Online (Sandbox Code Playgroud)

在文本框中生成以下输出:

13.09.2013 1441.28
09.13.2013
13.09.2013 1434.00
Run Code Online (Sandbox Code Playgroud)

从输出的第一行开始,很明显在我的PC的区域设置中,日期/时间被格式化为date.month.year HHmm.ss.

输出的第二行让我很困惑.虽然我MM/dd/yyyy为变量指定了格式s,但DateTime对象的格式为MM.dd.yyyy.为什么?

这是.NET Framework 4上的C#WPF程序.

Tim*_*ter 7

/是当前文化的日期分隔符的占位符.如果要将其强制为分隔符,则必须指定CultureInfo.InvariantCulture:

string s = dt.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

请参阅:"/"自定义格式说明符

DateTimeFormatInfo.DateSeparator当前或指定区域性的属性中检索适当的本地化日期分隔符 .


如果要解析a string,也是如此DateTime.

FormatException如果当前文化的实际日期分隔符不是,则抛出a /:

DateTime.ParseExact("09/13/2013", "MM/dd/yyyy", null);  
Run Code Online (Sandbox Code Playgroud)

始终有效:

DateTime.ParseExact("09/13/2013", "MM/dd/yyyy", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)