如何从Python中的日期时间字符串获取时区?

Ale*_*ory 6 python timezone datetime

我有一个看起来像这样的日期字符串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'
Run Code Online (Sandbox Code Playgroud)

Mat*_*int 2

一般来说,将时区缩写映射到时区标识符时必须小心。不存在一对一的映射。例如,CST可以是中部标准时间、中国标准时间或古巴标准时间。

由于您同时拥有偏移量和缩写,因此您可能可以进一步完善它,但仍然会存在歧义。例如,如果字符串包含GMT+02:00 (EET),则可以是此处列出的任何位置,其中一些位置全年使用 EET,其他位置在冬季使用 EET,在夏季使用 EEST。在使用 EEST 的那些中,并非所有这些都同时开始和结束。

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

即使当前的转变一致,它们在历史上也可能有所不同。例如,Europe/AthensEurope/Helsinki乍一看可能是一样的,直到您考虑到赫尔辛基在 1980 年没有遵守 EEST。

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