从时区或时区偏移c#获取文化信息

时间:2016-01-29 22:31:50

标签: c# date timezone globalization cultureinfo

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

2 个答案:

答案 0 :(得分:1)

正如其他人所说,他们是无关的。你可能认为他们是某种相关性,你可以找到它们所在的例子,但是你会找到许多它们不存在的地方。

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

此外,如果你只有一个时区偏移量,你肯定无法做出任何相关性,因为北美和南美洲的国家在某些时候都有相同的偏移量,但是使用不同的日期格式

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

在维基百科上查看date formats by country。您将看到有许多地方正在使用多种日期格式,具体取决于上下文。 The case of the Philippines,特别感兴趣,因为它们使用MDY和DMY格式。

答案 1 :(得分:0)

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