我有一个类似于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'
答案 0 :(得分:2)
通常,您必须小心将时区缩写映射到时区标识符。没有一对一的映射。例如,CST
可以是中央标准时间,中国标准时间或古巴标准时间。
由于您同时拥有偏移和缩写,您可能会进一步优化它,但您仍然会有歧义。例如,如果字符串包含GMT+02:00 (EET)
,则可以是the locations listed here中的任何一个,其中一些全年使用EET,其他一些在冬季使用EET,在夏季使用EEST。在那些使用EEST的人中,并非所有人都同时开始和结束。
每个变体都会创建一个不同的时区标识符。例如,Europe/Bucharest
,Europe/Istanbul
,Europe/Chisinau
和Asia/Amman
都使用EET和EEST,但所有过渡日期或时间都略有不同。
即使当前转换对齐,它们在历史上也可能不同。例如,Europe/Athens
和Europe/Helsinki
起初看起来可能相同,直到您认为赫尔辛基在1980年没有观察到EEST。
这些问题会影响尝试解析时区缩写和/或偏移到特定时区的任何库或函数,,无论编程语言。
答案 1 :(得分:1)
我同意@MattJohnson在解析tzinfo
个对象的短时区名称时需要非常小心。但是,如果您有一个特定的上下文,其中只有一个读数有意义(例如,您正在解析在美国生成的时间戳),则可以使用tzinfos
参数python-dateutil
的{{1}}功能
以下是如何使用它的示例:
parse