c# 中"M"自定义格式说明符的奇怪行为



此代码在每个 Console.WriteLine 语句下面的注释中生成输出。

谁能解释这种行为?

DateTime date1 = new DateTime(2008, 8, 18);
Console.WriteLine(date1.ToString("M"));
// Displays August 18
Console.WriteLine(date1.ToString("M "));
// Displays 8
Console.WriteLine(date1.ToString("(M)"));
// Displays (8)
Console.WriteLine(date1.ToString("(M) MMM, MMMM"));
// Displays (8) Aug, August

谁能解释这种行为?

是的,它完全记录在标准日期和时间格式字符串以及自定义日期和时间格式字符串中。

让我们一次浏览一个:

  • date1.ToString("M"):使用单个字符"M",因此它是"月/日模式"的标准格式字符串
  • date1.ToString("M "):它使用包含两个字符的格式字符串,因此它是一个自定义格式字符串,使用M是月份数字,1-12,没有填充。
  • date1.ToString("(M)"):再次,使用M的自定义格式字符串
  • date1.ToString("(M) MMM, MMMM"):使用M以及MMM("月份的缩写名称")和MMMM("月份的全名")的自定义格式字符串

前两者之间的重要区别在于,格式字符串仅在单个字符时才被视为标准格式。否则,它被视为自定义格式。如果要单独使用单字符自定义格式说明符,可以使用%作为前导字符 - 因此date1.ToString("%M")将返回"8"而不是"August 18"。

C# 中的日期和时间由 C# 中的 DateTime 结构处理,该结构提供属性和方法来设置不同日期时间格式的日期格式。

M-> Month number(eg.3)
MM-> Month number with leading zero(eg.04)
MMM-> Abbreviated Month Name (e.g. Dec)
MMMM-> Full month name (e.g. December)

https://www.c-sharpcorner.com/blogs/date-and-time-format-in-c-sharp-programming1

相关内容

  • 没有找到相关文章

最新更新