如何计算两个任意时间戳之间的总秒数?



我想计算两个任意时间戳之间的总秒数

我有以下内容:

import datetime
import dateparser

now = datetime.datetime.now(datetime.timezone.utc);  
now_bst = dateparser.parse("26April 11:55 am BST");
before = dateparser.parse("25 April 11pm BST");
now.timestamp() - before.timestamp(); # prints  82510.36681008339
now_bst.timestamp() - before.timestamp() #prints  46500.0

为什么结果如此不同?我希望结果是相同的(或超级接近),因为timestamp()解析为posix时间戳,这应该与UTC的bst值相同。

这是因为,你有一些错误的假设。是的,timestamp()返回POSIX时间戳,但不是UTC时间,除非您的系统配置了UTC时间戳。

从文档中,

datetime.timestamp ()返回POSIX时间戳datetime实例。返回值是一个类似的浮点数由time.time()返回

因此,该函数返回时间戳,这与您持有的datetime对象一致。如果实例是UTC,那么你得到UTC的POSIX时间戳。

也在docs

中明确提到

注意:没有办法直接从a获取POSIX时间戳表示UTC时间的朴素datetime实例。如果你的申请如果您的系统时区没有设置为UTC,则您需要使用此约定可以通过输入tzinfo=timezone.utc:

获取POSIX时间戳。

所以,在你的情况下,这是一种预期的行为,因为BST距离UTC是-1小时。

相关内容

  • 没有找到相关文章

最新更新