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.

输出的第二行让我感到困惑。虽然我MM/dd/yyyy为变量指定了格式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从当前或指定区域性的属性中检索适当的本地化日期分隔符 。


如果要将 a 解析为 ,也是string如此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 回答