python将任何日期时间字符串转换为UTC

python converting any datetime string to UTC

本问题已经有最佳答案,请猛点这里访问。

我有一个单调乏味的功能,可以这样做:

1
2
3
4
5
...
if ('PDT' in stringVal) or ('PST' in stringVal):
    utcdateTime = convert(stringVal)+(hardcode the offset)
elif('EDT' in stringVal)...
...

我看了几个帖子,包括这个,但找不到任何符合我目的的帖子。 我也查看了datetime.datetime和整个datetime模块,但它有类似.now()的东西;.utcnow(); datetime.now(tz.pytz.utc)等等。基本上如果我有类似的东西:

1
2
3
4
5
6
2014-05-01 01:02:03 PDT
2014-05-01 01:02:03 PST
2014-05-01 01:02:03 EDT
2014-05-01 01:02:03 EST
2014-05-01 01:02:03 MDT
2014-05-01 01:02:03 MST

有没有一个python模块,我可以使用一些方法将上述日期时间字符串转换为UTC? 如果没有,我会坚持我的硬编码方式。


您需要翻译时区字符串,否则您可以使用datetimepytz库。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import datetime
import pytz

s = '2014-05-01 01:02:03 PST'
ds, tzs = s.rsplit(' ', 1)

tz_map = {
    'PST': 'US/Pacific',
    'EST': 'US/Eastern'
}
tz = pytz.timezone(tz_map[tzs])

dt = datetime.datetime.strptime(ds, '%Y-%m-%d %H:%M:%S').replace(tzinfo=tz)
dt_utc = dt.astimezone(pytz.utc)