DateTime.ToString() 不适用于自定义模式和非默认系统设置
DateTime.ToString() not working well for custom pattern and non-default system settings
我试图在 .NET 4.5 上使用以下 C# 代码从 DateTime
对象中获取字符串:
var dateTime = new DateTime(2015, 9, 30);
var str = dateTime.ToString("M/d/yyyy");
Console.WriteLine(str);
正常情况下,这段代码的输出是9/30/2015,符合预期。
但是,如果我转到“控制面板”、“区域和语言”并将美国英语的 "Short date" 模式更改为 "dd-MMM-yy",上面的代码会突然显示 9-30-2015!
有谁知道为什么会发生这种情况以及如何解决/解决这个问题?请注意,例如,如果我在“区域和语言”中选择另一个短日期模式,例如 "M/d/yy",代码将正常工作。
格式字符串中的 /
被视为日期分隔符,并替换为区域设置中定义的分隔符。您必须使用 \
(准确地说是 \
)
来转义它
我试图在 .NET 4.5 上使用以下 C# 代码从 DateTime
对象中获取字符串:
var dateTime = new DateTime(2015, 9, 30);
var str = dateTime.ToString("M/d/yyyy");
Console.WriteLine(str);
正常情况下,这段代码的输出是9/30/2015,符合预期。
但是,如果我转到“控制面板”、“区域和语言”并将美国英语的 "Short date" 模式更改为 "dd-MMM-yy",上面的代码会突然显示 9-30-2015!
有谁知道为什么会发生这种情况以及如何解决/解决这个问题?请注意,例如,如果我在“区域和语言”中选择另一个短日期模式,例如 "M/d/yy",代码将正常工作。
/
被视为日期分隔符,并替换为区域设置中定义的分隔符。您必须使用 \
(准确地说是 \
)