如何从python中的datetime字符串中获取时区?

时间:2016-07-20 01:08:05

标签: python datetime timezone

我有一个类似于Tue Jul 19 2016 14:00:00 GMT-0700 (PDT)的日期字符串。是否有可以执行此类操作的库或函数?

print get_tz('Tue Jul 19 2016 14:00:00 GMT-0700 (PDT)')
'US/Pacific'

2 个答案:

答案 0 :(得分:2)

通常,您必须小心将时区缩写映射到时区标识符。没有一对一的映射。例如,CST可以是中央标准时间,中国标准时间或古巴标准时间。

由于您同时拥有偏移和缩写,您可能会进一步优化它,但您仍然会有歧义。例如,如果字符串包含GMT+02:00 (EET),则可以是the locations listed here中的任何一个,其中一些全年使用EET,其他一些在冬季使用EET,在夏季使用EEST。在那些使用EEST的人中,并非所有人都同时开始和结束。

每个变体都会创建一个不同的时区标识符。例如,Europe/BucharestEurope/IstanbulEurope/ChisinauAsia/Amman都使用EET和EEST,但所有过渡日期或时间都略有不同。

即使当前转换对齐,它们在历史上也可能不同。例如,Europe/AthensEurope/Helsinki起初看起来可能相同,直到您认为赫尔辛基在1980年没有观察到EEST。

这些问题会影响尝试解析时区缩写和/或偏移到特定时区的任何库或函数,,无论编程语言

答案 1 :(得分:1)

我同意@MattJohnson在解析tzinfo个对象的短时区名称时需要非常小心。但是,如果您有一个特定的上下文,其中只有一个读数有意义(例如,您正在解析在美国生成的时间戳),则可以使用tzinfos参数python-dateutil的{​​{1}}功能

以下是如何使用它的示例:

parse