C# DateTime.ToString()对于自定义模式和非默认系统设置不起作用

C# DateTime.ToString()对于自定义模式和非默认系统设置不起作用,c#,.net,datetime,cultureinfo,regional-settings,C#,.net,Datetime,Cultureinfo,Regional Settings,我试图使用.NET 4.5上的以下C#代码从DateTime对象中获取字符串: var dateTime = new DateTime(2015, 9, 30); var str = dateTime.ToString("M/d/yyyy"); Console.WriteLine(str); 正常情况下,该代码的输出为2015年9月30日,如预期 但是,如果我去控制面板、地区和语言,将美式英语的“短日期”模式改为“dd-MMM-yy”,上面的代码会突然显示9-30-2015 有人知道为什么

我试图使用.NET 4.5上的以下C#代码从
DateTime
对象中获取字符串:

var dateTime = new DateTime(2015, 9, 30);
var str = dateTime.ToString("M/d/yyyy");

Console.WriteLine(str);
正常情况下,该代码的输出为2015年9月30日,如预期

但是,如果我去控制面板、地区和语言,将美式英语的“短日期”模式改为“dd-MMM-yy”,上面的代码会突然显示9-30-2015


有人知道为什么会发生这种情况,以及如何修复/解决这种情况吗?例如,请注意,如果我在Region and Language中选择另一个短日期模式,如“M/d/yy”,则代码工作正常。

/
格式字符串中的日期分隔符将被视为日期分隔符,并替换为Region settings中定义的分隔符。您必须使用
\
\\
,准确地说)来转义它。

您的意思是:
dateTime.ToString(“M\\/d\\\/yyyy”)
?是的,它现在工作正常。非常感谢您的快速解决方案!