将DateTime格式化为字符串

时间:2013-09-13 08:46:09

标签: 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");

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

13.09.2013 1441.28
09.13.2013
13.09.2013 1434.00

从输出的第一行可以清楚地看到,在我的电脑的区域设置中,日期/时间的格式为date.month.year HHmm.ss

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

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

1 个答案:

答案 0 :(得分:7)

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

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

请参阅:The "/" Custom Format Specifier

  

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


如果您想要将string解析为DateTime,情况也是如此。

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

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

始终有效:

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