繁体   English   中英

Python:如何在不知道DST是否生效的情况下将时区感知时间戳转换为UTC

[英]Python: How to convert a timezone aware timestamp to UTC without knowing if DST is in effect

我正在尝试将始终在太平洋时间的天真时间戳转换为UTC时间。 在下面的代码中,我能够指定我的这个时间戳是在太平洋时间,但它似乎不知道它应该是UTC的-7小时的偏移,因为它只有10/21而且DST有尚未结束。

剧本:

import pytz
import datetime
naive_date = datetime.datetime.strptime("2013-10-21 08:44:08", "%Y-%m-%d %H:%M:%S")
localtz = pytz.timezone('America/Los_Angeles')
date_aware_la = naive_date.replace(tzinfo=localtz)
print date_aware_la

输出:

    2013-10-21 08:44:08-08:00

它应该具有-07:00的偏移,直到DST在11月3日结束。 当DST生效且无效时,如何让我的时区感知日期具有正确的偏移量? Pytz足够聪明,知道DST将于11月3日生效吗?

总体目标:我只是试图将时间戳转换为UTC,因为我知道我将在太平洋时间获得时间戳,而不会指示DST是否生效。 我没有从python本身生成这个日期,所以我不能只使用utc_now()。

使用localize方法:

import pytz
import datetime
naive_date = datetime.datetime.strptime("2013-10-21 08:44:08", "%Y-%m-%d %H:%M:%S")
localtz = pytz.timezone('America/Los_Angeles')
date_aware_la = localtz.localize(naive_date)
print(date_aware_la)   # 2013-10-21 08:44:08-07:00

在pytz文档的“示例和用法”部分中有所介绍

然后继续UTC:

utc_date = date_aware_la.astimezone(pytz.utc)
print(utc_date)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM