我遇到DateTime的字符串格式问题。我认为这是MS中的错误。你能解释一下,有什么不对吗?
class Program
{
static void Main(string[] args)
{
Console.WriteLine(DateTime.Now.ToString("M"));//return 07 July <---- WRONG, SEE MSDN
Console.WriteLine(DateTime.Now.ToString(".M"));//return .7 <---- GOOD
Console.ReadKey();
}
}
答案 0 :(得分:23)
来自The "M"
Custom Format Specifier
如果&#34; M&#34;格式说明符不使用其他自定义格式 说明符,它被解释为
"M"
standard date and time format specifier。有关使用单个格式说明符的更多信息, 请参阅本主题后面的Using Single Custom Format Specifiers。
来自Using Single Custom Format Specifiers
自定义日期和时间格式字符串由两个或更多个组成 字符。日期和时间格式化方法解释任何 单字符串作为标准日期和时间格式字符串。如果 它们不会将字符识别为有效的格式说明符 扔一个
FormatException
。 例如,包含的格式字符串 只有说明者&#34; h&#34;被解释为标准日期和时间 格式字符串。但是,在这种特殊情况下,例外情况是 抛出因为没有&#34; h&#34;标准日期和时间格式 说明符。强>使用任何自定义日期和时间格式说明符作为唯一 格式字符串中的说明符(即使用&#34; d&#34;,&#34; f&#34;,&#34; F&#34;,&#34; g&#34;, &#34; h&#34;,&#34; H&#34;,&#34; K&#34;,&#34; m&#34;,&#34; M&#34; ,&#34; s&#34;,&#34; t&#34;,&#34; y&#34;,&#34; z&#34;,&#34;:&#34;,或& #34; /&#34;自定义格式 说明符本身,在说明符之前或之后包含一个空格, 或者在单个自定义之前包含百分比(&#34;%&#34;)格式说明符 日期和时间说明符。
这就是为什么你可以使用其中一种;
Console.WriteLine(DateTime.Now.ToString(" M")); // 7
Console.WriteLine(DateTime.Now.ToString("M ")); //7
Console.WriteLine(DateTime.Now.ToString("%M")); //7