如何在Python中将本地时间转换为UTC?

问题:

如何将datetime string in local time转换为string in UTC time
我相信我以前做过这个,但是找不到它,而且,将来希望能够帮助我(和其他人)这样做。
 澄清:例如,如果我的本地时区(+10)中有2008-09-17 14:02:00,我想生成一个具有等效UTC时间的字符串:2008-09-17 04:02:00
另外,从http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/,请注意,一般来说,这是不可能的与DST和其他问题,没有唯一的转换从本地时间到UTC时间。

回答:

首先,将字符串解析为一个天真的datetime对象。这是datetime.datetime的实例,没有附加的时区信息。有关解析日期字符串的信息,请参阅datetime.strptime的文档。
使用pytz模块,其中附有时区+ UTC的完整列表。找出本地时区,构建时区对象,并将其附加到天真的datetime。
最后,使用datetime.astimezone()方法将datetime转换为UTC。
源代码,使用本地时区“America / Los_Angeles”,为字符串“2001-2-3 10:11:12”:

import pytz, datetime
local = pytz.timezone ("America/Los_Angeles")
naive = datetime.datetime.strptime ("2001-2-3 10:11:12", "%Y-%m-%d %H:%M:%S")
local_dt = local.localize(naive, is_dst=None)
utc_dt = local_dt.astimezone (pytz.utc)

从那里,您可以使用strftime()方法根据需要格式化UTC datetime:

utc_dt.strftime ("%Y-%m-%d %H:%M:%S")

 
 Code问答:       codewenda.com
Stackoverflow: How do I convert local time to UTC in Python?

发表评论

电子邮件地址不会被公开。 必填项已用*标注

89 − = 83