DateTime ToString 坏了?

Aaa*_*aaa 1 c# datetime tostring .net-core

为了

DateTime aDate = new DateTime(2000,1,1);  
Console.WriteLine(aDate.ToString("d"));
Run Code Online (Sandbox Code Playgroud)

我期待1,但它写道1/1/2000

MSDN说:

d 一个月中的第几天,从 1 到 31。

2009-06-01T13:45:30 -> 1

2009-06-15T13:45:30 -> 15

有什么解决方法吗?对于M.

网络小提琴

Joh*_*lay 8

文档

如果在没有其他自定义格式说明符的情况下使用“d”格式说明符,则将其解释为“d”标准日期和时间格式说明符。

“d”是短日期(“d”)格式说明符

如果您只需要一个月中的某一天,则有DateTime.Day

Console.WriteLine(aDate.Day);
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用 % 作为格式字符串的前缀:

Console.WriteLine(aDate.ToString("%d"));
Run Code Online (Sandbox Code Playgroud)

  • 恕我直言,整个“日期时间格式字符串”非常混乱。如果您问我,标准日期时间格式说明符甚至不应该作为字符串存在。它们应该是一个枚举,这将清楚地区分“ToString(string format)”和“ToString(StandardFormats)”,而且,您不必一次又一次地阅读文档,您只需查看在枚举名称处。 (3认同)