python - 如何将本地时间字符串转换为 UTC?

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

我确定我以前做过这个,但找不到它,所以希望将来能帮助我(和其他人)做到这一点。

澄清:例如,如果我的本地时区有 2008-09-17 14:02:00 (+10) ,我想生成一个具有等效 UTC 时间的字符串:2008-09-17 04:02:00

另外,来自 http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/ ,请注意,通常这是不可能的,因为 DST 和其他问题没有从本地时间到 UTC 时间的唯一转换。

最佳答案

首先,将字符串解析为一个简单的日期时间对象。这是 datetime.datetime 的一个实例,没有附加时区信息。见其documentation .

使用 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")

https://stackoverflow.com/questions/79797/

相关文章:

python - 在 Python 中打印多个参数

python - 动态打印一行

python - 如何计算 ndarray 中某个项目的出现次数?

python - 为什么使用 argparse 而不是 optparse?

python - 在 Python 中将 datetime.date 转换为 UTC 时间戳

python - 在 Python 3 中从 Web 下载文件

python - 得到一系列列表的笛卡尔积?

python - 测试 Python 中是否存在可执行文件?

python - '太多的值无法解包',迭代一个字典。键=>字符串,值=>列表

python - 为什么 'x' 中的 ('x' 比 'x' == 'x' 快?