我想计算两个任意时间戳之间的总秒数
我有以下内容:
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小时。