将本地时间转换为 UTC 时间(日期时间对象)
Posted
技术标签:
【中文标题】将本地时间转换为 UTC 时间(日期时间对象)【英文标题】:converting local time to UTC time(datetime object) 【发布时间】:2016-08-27 03:57:57 【问题描述】:我正在尝试将本地时间转换为“UTC”时间。
遵循本指南:How do I convert local time to UTC in Python?
但这里的问题在于我们在这里给出的日期类型。
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)
在上面的代码中输入的是“2001-2-3 10:11:12”(字符串),但在我的例子中,它将是一个日期时间对象。
begin = begin.replace(hour=0, minute=0, second=0, microsecond=0)
请告诉我如何在这里实现转换。
【问题讨论】:
【参考方案1】:如果您的输入 (begin
) 不是时间字符串,但它已经是 naive (no timezone info) datetime
对象,则从示例中删除 datetime.strptime()
行(将时间字符串解析为 datetime
对象)。要将代表本地时间的给定naive datetime
对象转换为UTC:
import pytz # $ pip install pytz
import tzlocal # $ pip install tzlocal
local_timezone = tzlocal.get_localzone()
local_dt = local_timezone.localize(begin, is_dst=None)
utc_dt = local_dt.astimezone(pytz.utc)
【讨论】:
【参考方案2】:您的字符串格式需要稍作修改。您只需要月份和日期中的前导零:
import pytz, datetime
local = pytz.timezone("America/Los_Angeles")
naive = datetime.datetime.strptime ("2001-02-03 10:11:12", "%Y-%m-%d %H:%M:%S")
local_dt = local.localize(naive)
utc_dt = local_dt.astimezone(pytz.utc)
【讨论】:
以上是关于将本地时间转换为 UTC 时间(日期时间对象)的主要内容,如果未能解决你的问题,请参考以下文章