python:utcfromtimestamp与fromtimestamp,当时间戳基于utcnow()时

问题描述 投票:0回答:1

很确定这很简单,但我不明白。

我的本地TZ当前为GMT + 3,当我从datetime.utcnow().timestamp()中获取时间戳时,确实比datetime.now().timestamp()少了3小时

在流程中的另一个过程中,我使用了该utc时间戳,需要将其转换为日期时间。

[当我执行fromtimestamp时,我得到了正确的utc小时,但是当我使用utcfromtimestamp时,我又得到了3个小时的偏移。

不过,文档要求我将fromtimestamp用于本地时区,将utcfromtimestamp用于utc。

我想念什么?这两个函数的初始假设是时间戳是在本地时区给出的吗?

谢谢:)

python datetime utc
1个回答
0
投票

[同时使用datetime对象及其POSIX时间戳时要注意的关键是,Python假定朴素的datetime对象(没有时区信息的对象)是指本地时间。相反,POSIX时间戳(应该)始终指的是自该时期以来的UTC秒。您可以通过time.time()明确获得它。在您的示例中,发生了奇怪的事情。

1] time.time()-datetime.utcnow()为您提供了一个类似于UTC的天真日期时间对象,但是,如果您使用timestamp(),Python会假定(因为天真)datetime.utcnow().timestamp()对象是本地时间。 (!)生成的时间戳与UTC不一致...

2] datetime-datetime.now()为您提供了一个类似于本地时间的幼稚datetime对象,如果您使用datetime.now().timestamp(),则结果实际上是正确的。

一个代码示例。让我们做一些时间戳记。请注意,我使用的是UTC + 2,因此偏移量是-7200秒。

timestamp()
© www.soinside.com 2019 - 2024. All rights reserved.