如何在 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”。
在 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”。