首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有时区的Python解析时间戳

带有时区的Python解析时间戳
EN

Stack Overflow用户
提问于 2021-05-02 21:11:20
回答 1查看 114关注 0票数 0

不久前,我遇到了这个问题,当时解析带有时区数据的ISO字符串和解析时间戳(据说是同一时间的)将产生不同的结果。我编写了一个测试来检查这种行为,它看起来非常不一致:

代码语言:javascript
复制
from pytz import timezone as tz
from datetime import datetime

timezone = "Australia/Sydney"
start_time = "2021-05-04T08:12:00"
tz_object = tz(timezone)
naive_datetime = datetime.fromisoformat(start_time)


zoned_time = datetime(naive_datetime.year, naive_datetime.month, naive_datetime.day, naive_datetime.hour, naive_datetime.minute, naive_datetime.second, tzinfo=tz_object)
parsed_time = datetime.fromtimestamp(zoned_time.timestamp(), tz_object)

assert zoned_time.time() == naive_datetime.time()
assert zoned_time.time() == parsed_time.time()

此测试产生以下输出

代码语言:javascript
复制
  File "test.py", line 13, in <module>
    assert zoned_time.time() == parsed_time.time()
  AssertionError

除非我错过了什么,否则我只能得出结论,这一行造成的时间

代码语言:javascript
复制
parsed_time = datetime.fromtimestamp(zoned_time.timestamp(), tz_object)

产生的时间与解析实际的ISO字符串不同。通常,我希望解析时间的时间戳返回一个时间戳,该时间戳指的是分配给它的时区中的上午8:12。

这是预期的行为吗?我错过了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-03 06:07:22

在Python3.9中,使用区域信息。请注意,如果需要的话,比兹有一个不推荐的空间。

然后,您的代码运行良好,就像

代码语言:javascript
复制
from datetime import datetime
from zoneinfo import ZoneInfo

timezone = "Australia/Sydney"
tz_object = ZoneInfo(timezone)

start_time = "2021-05-04T08:12:00"
naive_datetime = datetime.fromisoformat(start_time)

zoned_time = datetime(naive_datetime.year, naive_datetime.month, naive_datetime.day, naive_datetime.hour, naive_datetime.minute, naive_datetime.second, tzinfo=tz_object)
parsed_time = datetime.fromtimestamp(zoned_time.timestamp(), tz_object)

assert zoned_time.time() == naive_datetime.time()
assert zoned_time.time() == parsed_time.time()

至于为什么会出现断言错误:在pytz中,您需要使用带有时区的datetime对象进行localize从不使用pytz直接设置tzinfo。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67361157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档