DateTimeFormatInfo.InvariantInfo日期模式不一致?

时间:2017-02-23 14:35:45

标签: c# datetime datetime-format globalization

根据MSDN,静态属性DateTimeFormatInfo.InvariantInfo获取与文化无关(默认)”的默认只读DateTimeFormatInfo对象。

然而,长日期模式是“dddd,dd MMMM yyyy”,格式如2016年2月29日星期一。这种格式通常用于西欧大陆。

短日期模式是“MM / dd / yyyy”,其格式为02/29/2016。这种格式通常在美国使用。

更糟糕的是,当尝试转换为可排序格式“s”时,此FormatProvider将导致02/29/2016 00:00:00,这几乎无法排序。

这种不一致的行为是一个错误,还是对“独立文化”的妥协?

1 个答案:

答案 0 :(得分:0)

对我来说似乎是标准行为。 DateTimeFormatInfo.InvariantInfo既不是中性文化也不是特定文化,但它生成的格式可以转换为任何特定于文化的格式。正如您在source code中所看到的,它是基于英语的,但不是特定于文化的(但不是en-US)。还有你的观察:

  

短日期模式是" MM / dd / yyyy"这导致了   格式02/29/2016。这种格式通常在美国使用。

不正确,因为en-US文化ToString(" d")将提供2/29/2016(无领先)。时间也是上午或下午。