在Microsoft C#的文档中说
要更改特定日期和时间字符串的时间分隔符,请在文字字符串定界符中指定分隔符。 例如,自定义格式字符串
hh'_'dd'_'ss
生成一个结果字符串,其中始终将“ _”(下划线)用作时间分隔符。
在我的代码中,我尝试对带日期和不带撇号的两种方式都使用分隔符作为日期,如下所示 但是两个输出的结果都相同!
带有撇号
var __Date = new DateTime(1998, 07, 8, 07, 5, 1).ToString("yyyy'-'MM'-'dd hh':'mm':'ss");
输出为:1998-07-08 07:05:01
没有撇号
var _Date = new DateTime(1998,07,8,07,5,1).ToString("yyyy-MM-dd hh:mm:ss");
输出为:1998-07-08 07:05:01
有人可以真的告诉我文档中日期分隔符中的Apostrophe的目的是什么?
答案 0 :(得分:7)
The :
custom format specifier的特殊含义是:
用当前文化或提供的文化时间分隔符替换我。
这意味着,如果您使用的文化没有 将:
作为TimeSeparator
,则:
被您当前文化的{{1 }}中的输出。无论当前的文化时间分隔符是否为TimeSeparator
,这些撇号都可以使您摆脱时间分隔符 。
您的第一个代码生成:
作为输出,无论您当前使用的语言:
是什么,因为您逃避了它们。
如果您当前的区域性将TimeSeparator
作为:
,则您的第二个代码仅生成:
作为输出 。
例如,TimeSeparator
文化确实将ml-IN
作为.
(至少在.net Framework 4.6.1中,请注意,这些分隔符可能通过.net框架或操作系统版本进行更改)。如果将TimeSeparator
更改为CurrentCulture
,则会得到ml-IN
作为输出。
the /
custom format specifier和DateSeparator
的这些规则都是相同的。
答案 1 :(得分:0)
您错过了the documentation中的该部分:
“:”自定义格式说明符表示时间分隔符,用于区分小时,分钟和秒。 从当前或指定区域性的DateTimeFormatInfo.TimeSeparator属性中检索适当的本地化时间分隔符。
这是什么意思,如果您使用默认的时间分隔符:
,它将根据默认或指定的culture settings(用于语言本地化)进行替换。