Datetime.ToString()在C#中不按预期工作

9

msdn看来,我可以使用Datetime.ToString()方法创建自己的格式,例如使用M、m、d、y等。但是当我尝试使用其中一个时,它并没有按照预期工作,下面是问题的片段。

enter image description here

我期望得到的是2015年7月29日,但实际收到的是2015年7月29日,为什么?

2
因为/是您系统上配置的日期分隔符,所以请使用'/'表示斜杠。 - Frédéric Hamidi
@Adil,区别在于“-”和“/”。 - Alex Neves
可能是如何在C#中使用斜杠格式化日期的重复问题。 - Dzyann
1个回答

22

看起来你的 DateSeparator 和你的 CurrentCulture-,这就是为什么 / 字符会被替换成它。

"/" 自定义格式说明符 有一个特殊的含义,即用当前区域设置或提供的区域设置日期分隔符替换我。

你有几个选择,你可以用单引号转义它(或在verbatim字符串文字中使用\/),或者使用具有/作为DateSeparator的文化,如InvariantCulture

string s = DateTime.Now.ToString("M'/'d'/'yyyy");
string s = DateTime.Now.ToString(@"M\/d\/yyyy");
string s = DateTime.Now.ToString("M/d/yyyy", CultureInfo.InvariantCulture);

好的,谢谢伙计。我会尽快在允许的时候接受。 :) - yogi
@yogi 不可以。你可以尝试一下。在你的字符串中,/ 表示“使用相关格式提供程序的日期分隔符”。然而,'/'\/ 表示“包含一个字面上的斜杠”。因此,"M'/'d'/'yyyy"@"M\/d\/yyyy" 都可以。 - Jeppe Stig Nielsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接