如何在 C# 日期格式中格式化单个数字月份?

How do I format a single digit month in C# date formatting?

在 C# 中,如果我 运行 这段代码,它会打印出 05:

Console.WriteLine(DateTime.Now.ToString("MM"));

但是,如果我 运行 这段代码,它会打印出 May 16:

Console.WriteLine(DateTime.Now.ToString("M"));

我正在寻找一种可以打印出来的日期格式 5。如何格式化一位数字的月份?明确地说,第 1 至 9 个月为 1 位数字,第 10 至 12 个月为 2 位数字。

Microsoft 在 https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings

上有一些关于如何将 DateTime 格式化为字符串值的优秀文档

您要查找的参数是 M,这将使方法调用 DateTime.Now.ToString("M");

更新: 然而,正如 Hans Kesting 所指出的,这在某些情况下可能会产生意想不到的结果,这可以通过将 %M 结合使用来避免,如 https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings#UsingSingleSpecifiers[=16= 中所述]

“%M" 应该可以。参见 custom format strings


一些解释:

  • “M”可以是 custom format string 的一部分,表示一位或两位数的“月份”
  • 但就其本身而言,它也可以是 standard format string,意思是“月日模式”- 正如 OP 发现的那样。

要解决此歧义,您可以添加 space,使其成为自定义格式字符串,但也会向结果值添加 space。或者您可以添加 %.

现在(5 月)DateTime.Now.ToString("%M") 结果为“5”。