DotNet DateTime.ToString奇怪的结果

Mik*_*tes 4 c# vb.net datetime

为什么:

DateTime.Now.ToString("M")
Run Code Online (Sandbox Code Playgroud)

不退还月份号码?相反,它返回完整的月份名称及其上的日期.

显然,这是因为"M"也是MonthDayPattern的标准代码.我不想要这个......我想用"M"来获取月号.有没有办法把它关掉?

Fra*_*nov 9

根据MSDN,您可以使用"%M","M "" M"(注意:最后两个也将包括在结果中的空间)强制M是解析为一个月格式的数量.


Jar*_*Par 8

这里发生的是标准DateTime格式字符串和自定义格式说明符之间的冲突.值"M"是不明确的,因为它既是标准格式说明符又是自定义格式说明符.该DateTime实施将选择在客户格式在冲突的情况下,一个标准的格式,因此它在这里获胜.

消除歧义的最简单方法是在M前加上%char.此char表示以下内容应解释为自定义格式化程序

DateTime.Now.ToString("%M");
Run Code Online (Sandbox Code Playgroud)


Roa*_*rth 5

为什么不用 DateTime.Now.Month