将本地时间转换为 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 时间(日期时间对象)的主要内容,如果未能解决你的问题,请参考以下文章

将 UTC 纪元转换为本地日期

使用时刻将对象中的本地时间转换为UTC

如何使用js将UTC日期转换为本地时间? [复制]

将 UTC 日期时间字符串转换为本地日期时间

将 UTC 日期时间全局转换为用户指定的本地日期时间

将 UTC 日期时间转换为 pandas 中的本地日期时间