为什么:
DateTime.Now.ToString("M")
不返回月份数字?相反,它会返回带有日期的完整月份名称。
显然,这是因为“M”也是MonthDayPattern的标准代码。我不想要这个...我想使用“M”获取月份数字。有没有办法关闭这个?
"%M"
、"M "
或" M"
(注意:后两者也会在结果中包含空格)来强制解析M作为月份格式的数字。DateTime
格式字符串和自定义格式说明符之间的冲突。 “M”值含糊不清,因为它既是标准格式说明符又是自定义格式说明符。在冲突的情况下,DateTime
实现将选择标准格式化程序而不是客户格式化程序,因此在这里获胜。DateTime.Now.ToString("%M");
为什么不使用DateTime.Now.Month
呢?
System.DateTime.Now.Month.ToString();
来实现同样的功能。您可以在格式字符串中放置一个空字符串文字,使其成为组合格式:
DateTime.Now.ToString("''M")
DateTime.ToString(string)
方法时,对于任何单个字符格式字符串,都需要使用%前缀,即使该字符串不表示内置格式字符串模式之一;当我尝试检索当前小时数时,遇到了这个问题。例如,以下代码片段:DateTime.Now.ToString("h")
会抛出一个FormatException
异常。将上述内容更改为:
DateTime.Now.ToString("%h")
返回当前日期的小时。
我只能假设该方法查看格式字符串的长度,并决定它是否表示内置或自定义格式字符串。
"%MM"
可能会返回55而不是05。编辑:@Guffa的答案是在“''M”之前放置空字符串-更好地覆盖它。 - oCcSking