如何转换日期时间当地时间的字符串 to a UTC 时间字符串?
我确信我以前做过这个,但找不到它,所以希望将来能帮助我(和其他人)做到这一点。
澄清: 例如,如果我有2008-09-17 14:02:00
在我当地的时区(+10
),我想生成一个具有等效值的字符串UTC
time: 2008-09-17 04:02:00
.
另外,从http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/,请注意,一般来说这是不可能的,因为 DST 和其他问题没有从本地时间到 UTC 时间的唯一转换。
首先,将字符串解析为简单的日期时间对象。这是一个实例datetime.datetime
没有附加时区信息。见其文档.
Use the pytz模块,其中包含时区 + UTC 的完整列表。找出本地时区是什么,从中构造一个时区对象,然后操作它并将其附加到原始日期时间。
最后,使用datetime.astimezone()
方法将日期时间转换为 UTC。
源代码,使用本地时区“America/Los_Angeles”,字符串“2001-2-3 10:11:12”:
from datetime import datetime
import pytz
local = pytz.timezone("America/Los_Angeles")
naive = 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 日期时间的方法:
utc_dt.strftime("%Y-%m-%d %H:%M:%S")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)