在日期中使用自定义格式的撇号''

时间:2018-07-23 19:03:19

标签: c# datetime

在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的目的是什么?

2 个答案:

答案 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 specifierDateSeparator的这些规则都是相同的。

答案 1 :(得分:0)

您错过了the documentation中的该部分:

  

“:”自定义格式说明符表示时间分隔符,用于区分小时,分钟和秒。 从当前或指定区域性的DateTimeFormatInfo.TimeSeparator属性中检索适当的本地化时间分隔符。

这是什么意思,如果您使用默认的时间分隔符:,它将根据默认或指定的culture settings(用于语言本地化)进行替换。