C# 日期时间格式中的单引号是什么意思?

What does a single quote inside a C# date time format mean?

我们有C# 中的这个常量:

System.Globalization.DateTimeFormatInfo.InvariantInfo.SortableDateTimePattern

它有这个值:

"yyyy'-'MM'-'dd'T'HH':'mm':'ss"

我确实在 ParseExact 函数中使用了它,然后 yyyy-MM-ddTHH:mm:ss 也能正常工作。

我不明白单引号是干什么用的。

这是一个literal string delimiter

单引号之间的任何内容都被解释为文字字符,不会被解释为自定义格式字符串。

它们相当于使用反斜杠转义:dd'T'HHdd\THH 相同。

在您的字符串 yyyy'-'MM'-'dd'T'HH':'mm':'ss 中,-T 周围的引号是不必要的,因为它们不是自定义格式字符串,因此将始终被解释为字符串文字。但是 : is a format specifier,其计算结果为适合当前文化的时间分隔符。将其引用为 ':' 意味着将始终使用文字字符 :,而不管当前的文化如何。

知道这与 Windows GetDateFormat 函数使用的格式相同是很有用的。您使用撇号来指示要插入到结果字符串中的一些文字。

有关字符串格式化代码的更多文档,请访问:

在您的字符串中,它表明 字面意思 想要添加连字符、冒号和 T 字符:

yyyy '-' MM '-' dd 'T' HH ':' mm ':' ss

一般来说,您不希望用 字面上的 连字符 (-) 或冒号 (:) 构造 dates/times,甚至斜杠 (/)。因为对于不使用斜杠和冒号来构造 dates/times:

的文化来说,这些是错误的
  • 10/22/2019 10∶19∶54 ᴀᴍ
        1. 10:19:54
  • 2019.10.2210:19:54
  • 2019-10-22 10.19.54
  • 2019-10-2210:19:54
  • 2019-10-2210:19:54上午
  • 2019-10-22 ཆུ་ཚོད་10:19:54 སྔ་ཆ་
  • 2019-10-22 오전 10:19:54
      1. 201910:19:54
        1. 10:19:54
  • 22.10.19 10:19:54
  • 22.10.19 ÿ. 10:19:54
  • 22.10.2019 10.19.54
  • 2019 年 10 月 22 日 10:19:54
  • 22.10.2019 10:19:54 p.d.
  • 2019 年 10 月 22 日10:19:54
  • 2019 年 10 月 22 日。 10:19:54
  • 22-10-19 10.19.54
  • 22-10-19 10.19.54 上午
  • 22-10-1910:19:54
  • 22-10-19 年 10:19:54
  • 22-10-2019 10:19:54
  • 22-10-2019 ৰাতিপু 10:19:54
  • 22-окт。 19 10:19:54
  • 23/02/41 10:19:54 õ
  • 30/07/1398 10:19:54 ق.ظ

你想做什么,如果你想表明:

  • "here is where you should put the date separator"
  • "here is where you should put the time separator"

是否使用特殊:

  • 日期分隔符替换字符(/)
  • 时间分隔符替换字符(:)

并构建格式如:

dd/yyyy/MM ss:HH:mm

我不知道什么业务需要将日期显示为:

  • 22/2019/10 37:10:24
  • 22-2019-10 37∶10∶24
  • 22//2019//10 37::10::24
      1. 10 37∶10∶24

但这样本地化程序将插入区域性的正确日期和时间分隔符。

而如果您 字面上 要求 /-::

  • dd '/' yyyy '/' MM ss ':' HH ':' mm

您将真正获得:

  • 22/2019/10 37:10:24

而不是:

  • 22-2019-10 37∶10∶24