c# - DateTimeFormatInfo.InvariantInfo 不一致的日期模式?

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

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

最佳答案

对我来说似乎是标准行为。 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(无前导)。此外,时间是上午或下午。

关于c# - DateTimeFormatInfo.InvariantInfo 不一致的日期模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42418700/

相关文章:

c# - 在 C# 中存储重复的键值对

sql - 按时间限制SQL结果,MySQL

java - 将 SAS 日期值转换为 Java YYYY-MM-DD

c# - 如何清除最高有效位?

c# - LINQPad:通过 System.Data.Sqlite LINQ to SQLite DataContext

C# 将 yyyymmdd 转换为日期时间

c# - 如何将日期格式化为本地化的 Short MonthDay 字符串

ruby-on-rails - 格式化 JSON API 的 Active Record 时间戳

php - 如何在php中分隔日期和时间?

c# - 在代码隐藏中更改时,TextBox 中的文本不会立即更新