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

Mus*_*tyr 11 .net c# 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

MSDN

Son*_*nül 23

"M"自定义格式说明

如果没有其他自定义格式说明符使用"M"格式说明,它被解释为"M"标准日期和时间格式说明.有关使用单个格式说明符的详细信息,请参阅本主题后面的使用单个自定义格式说明符.

使用单个自定义格式说明符

自定义日期和时间格式字符串由两个或多个字符组成.日期和时间格式化方法将任何单字符字符串解释为标准日期和时间格式字符串.如果他们不将该字符识别为有效的格式说明符,则会抛出一个FormatException.例如,仅由说明符"h"组成的格式字符串被解释为标准日期和时间格式字符串.但是,在这种特殊情况下,抛出异常,因为没有"h"标准日期和时间格式说明符.

使用任何自定义日期和时间格式说明符作为格式字符串中的唯一说明符(即使用"d","f","F","g","h","H", "K","m","M","s","t","y","z",":"或"/"自定义格式说明符)包括在之前或之后的空格说明符,或在单个自定义日期和时间说明符之前包含百分比("%")格式说明符.

这就是为什么你可以使用其中之一;

Console.WriteLine(DateTime.Now.ToString(" M")); // 7
Console.WriteLine(DateTime.Now.ToString("M ")); //7
Console.WriteLine(DateTime.Now.ToString("%M")); //7
Run Code Online (Sandbox Code Playgroud)

  • +1.这就是我所说的在线之间阅读.一切都在OP面前.OP甚至提供了链接. (3认同)
  • +1.谢谢,这是解决方案.将%放入"%M"中返回正确的值. (3认同)
  • @NikhilAgrawal:我认为它更像是"阅读线条"而不是阅读线条.;-) (3认同)