如何从CultureInfo属性中获取时区

11

我有一个字符串,其中包含时间戳 (yyyy-mm-dd hh:mm:ss)。 我可以基于其他信息创建一个CultureInfo对象。 因此,我知道该时间戳所在的国家。 该时间戳不是UTC / GMT。

假设时间戳来自印度尼西亚(new CultureInfo("id-ID")),意味着该字符串是通过下面的代码或类似代码创建的。

DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");

这意味着该字符串包含印度尼西亚的本地时间。我知道我的时区,但不知道如何将印尼时间转换为UTC/GMT,以便可以使用TimeZoneInfo中的UTC/GMT对象。我的时区可能与该时区相同也可能不同。

有没有任何地方可以获取这些信息?

CultureInfo有很多属性,肯定有一些可以用于获取时区,对吧?

我想补充说明的是,我觉得整个系统非常令人困惑,所以我可能对事情的运作方式存在误解。

1个回答

10

简短回答:不行

详细回答:文化和时区之间是一对多的关系。例如:en-US - 英语,美国包含6个时区...那么如何从en-US得到Eastern Daylight时间? 如何获取夏令时偏移量?

这是一个令人困惑的文化难题(哇,试着5次快速说出来),使用CLR无法轻松解决。


2
我立刻意识到这将是一个挑战。我进行了一些谷歌搜索,找到了这个维基按国家/地区划分的时区。那些有很多时区的国家并不多。澳大利亚、巴西、加拿大、法国、印度尼西亚(呵呵)、墨西哥、新西兰、俄罗斯(!)、英国、美国+-现在使用该数据源,并对有许多时区的国家默认使用首都所在时区,就可以轻松解决问题。只是想把我的想法说出来。 - CS.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接