在.NET中发出字符串格式为“M”的DateTime.ToString

时间:2014-07-09 10:38:55

标签: c# .net string datetime datetime-format

我遇到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();
    }
}

MSDN

1 个答案:

答案 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