【问题标题】:Get the culture info from a time zone or time zone offset c#从时区或时区偏移c#获取文化信息
【发布时间】:2016-05-07 19:41:57
【问题描述】:

我正在尝试根据文化信息格式化日期。问题是我不知道文化信息,我只知道时区和时区偏移。所以我希望能够根据哪个时区获取文化信息,以便格式化日期字符串。例如,如果时区是美国东部标准时间,那么日期格式将是 MM/DD/YYYY,但如果时区是澳大利亚,那么我需要格式化日期 DD/MM/YYYY。我知道文化与时区是一对多的关系,但如果我以相反的顺序进行并且我有特定的时区,那么它应该是一对一的关系。有谁知道实现这一点的方法吗?

【问题讨论】:

  • 这没什么意义,像西欧时间这样的时区涵盖了许多文化。不要再认为时区有帮助,你需要了解文化。

标签: c# date timezone globalization cultureinfo


【解决方案1】:

仅使用时区和区域偏移来定义日期格式有点不可能。例如,根据wikipedia,加拿大、美国和墨西哥有一些共同的时区和时间偏移,但日期格式不同

【讨论】:

    【解决方案2】:

    正如其他人所说,它们是无关的。您可能认为它们之间存在某种相关性,并且您可能能够找到它们所在的示例,但随后您会发现很多它们不存在的地方。

    考虑到我的文化可能是en-US,即使我正在日本访问或居住。文化代码的意思是“美国所说的英语”。它不是指用户当前的物理位置。

    另外,如果您只有一个时区偏移量,那么您肯定无法进行任何关联,因为北美和南美的某些国家/地区在某些时候共享相同的偏移量,但使用不同的日期格式.

    如果您有一个实际的时区 标识符,那么它取决于您拥有的类型。对于基于位置的 IANA 标识符,例如 "America/New_York",您可以查找国家代码,然后从那里猜测格式 - 尽管您仍然会遇到我上面描述的外国访客问题。此外,还有像 "Etc/GMT-2" 这样的 IANA 标识符,它们不是特定于国家/地区的。然后,如果您有 Windows 时区标识符(例如在 .NET 中与 TimeZoneInfo 一起使用的标识符),则有几个跨越多个国家/地区。不能保证使用时区的每个国家/地区都使用相同的日期格式。

    查看维基百科上的date formats by country。您会看到很多地方使用了不止一种日期格式,具体取决于上下文。 The case of the Philippines 特别有趣,因为他们使用 MDY 和 DMY 格式。

    【讨论】:

    • 感谢您的解释。离开哪个国家而不是离开一个时区似乎是一个更好的主意。
    • 你说你没有国家或文化,对吧?或者这是一个网络应用程序?如果是这样,您也许可以从浏览器中获取它。
    • 现在我只是从客户端发出的请求中获取用户语言。如果不存在,那么将使用其他东西代替它。
    • W3C's article on this 值得一读。他们基本上建议Accept-Language 标头开始,但让您的用户可以控制在您网站的某处更改它。
    • 当您这样做时,它会隐式调用不带参数的ToString,它使用CultureInfo.CurrentCulture,以及该区域性的默认general 格式。相反,要明确,您可以控制文化和格式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 2014-03-27
    • 2014-02-15
    • 2021-04-11
    • 2012-08-20
    相关资源
    最近更新 更多