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

Get the culture info from a time zone or time zone offset c#

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

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

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

考虑到我的文化可能是 en-US,即使我正在访问或居住在日本。文化代码表示"English as spoken in the United States"。它不涉及用户的当前物理位置。

另外,如果你只有一个时区偏移量,你当然不能做任何关联,因为北美和南美有些国家在某些时候共享相同的偏移量,但使用不同的日期格式。

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

看看 date formats by country on Wikipedia. You'll see that there are many places where more than one date format is in use, depending on context. The case of the Philippines,特别感兴趣,因为他们同时使用 MDY 和 DMY 格式。