DateTimeFormatInfo.InvariantInfo 日期模式不一致?

DateTimeFormatInfo.InvariantInfo inconsistent date patterns?

根据 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,这几乎无法排序。

这种不一致的行为是错误,还是对 "culture-independant" 的妥协?

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

The short date pattern however is "MM/dd/yyyy" which results in a format 02/29/2016. This format is commonly used in the USA.

不正确,因为 en-US 文化 ToString("d") 将给出 2/29/2016(无前导)。还有时间是上午还是下午。