从日期时间中找到时区

3
我有一个类似于Sat, 27 Oct 2012 23:47:57 -0700的字符串,我想获得对应于-0700的时区,例如PSTUTC等。

对于给定的偏移量,可能会有多个时区标识符。 - air4x
1个回答

6
基本上你是无法做到的。你目前只有与UTC的一个偏移量...这可能映射到多个时区。当然,你可以创建一个固定偏移的时区 - 但这并不等同于“生成此日期/时间值时用户最初所在的时区”,这正是我认为你想要的。
你可以查看所有时区并查看每个时区是否有效-但由于某些时间是模糊的,你需要小心。例如,在英国的星期天,“2012年10月28日星期日01:30:00 +0100”和“2012年10月28日星期日01:30:00 +0000”都是有效的。你可能想要计算出绝对的UTC时刻,并检查该时刻在候选时区中的偏移量。如果该偏移量与你开始的偏移量相同,则该时区是符合条件之一。
如果你发现有多个符合条件的时区,你应该怎么做,我不知道-我们没有足够的上下文来给出建议。

有多少次会有超过一个时区与给定的UTC+偏移量匹配? - John Gietzen
@JohnGietzen: 确实经常发生。 如果您不关心历史更改(即在特定时刻给定UTC偏移量,如果您只关心之后的UTC偏移量),则会少一些 - 但它仍然会发生,并且比您预期的要多。 以伦敦和卡萨布兰卡为例 - *大多数时间它们具有相同的偏移量,但在夏季中间的一个月中,卡萨布兰卡会回到标准时间。(可能是为了斋月 - 还不确定。) - Jon Skeet

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