Python 现在日期时间与现在日期时间的区别

标签 python datetime diff

我遇到了一个问题,或者很可能反过来!不确定,想知道!在 python 的 datetime 库中,获取时间差,如下面的代码片段所示。

>>> import datetime
>>> datetime.datetime.now() - datetime.datetime.now()
datetime.timedelta(-1, 86399, 999958)
>>> tnow = datetime.datetime.now()
>>> datetime.datetime.now() - tnow
datetime.timedelta(0, 4, 327859)

我想了解为什么 datetime.datetime.now() - datetime.datetime.now() 在分配时将输出生成为 -1 天,86399 秒某些变量的当前时间和计算差异给出了所需的输出 0 天 4 秒

结果似乎有点困惑,如果有人能破解背后的原因会很有帮助

注意:我使用的是 Python 2.7

最佳答案

根据 timedelta object 的文档

If the normalized value of days lies outside the indicated range, OverflowError is raised.

Note that normalization of negative values may be surprising at first. For example:

>>> from datetime import timedelta
>>> d = timedelta(microseconds=-1)
>>> (d.days, d.seconds, d.microseconds)
(-1, 86399, 999999)

这对 python 2.7 和 3 都有效。

发生这种情况的原因很简单:

a , b = datetime.datetime.now(), datetime.datetime.now()
# here datetime.now() in a will be <= b.
# That is because they will be executed separately at different CPU clock cycle.

a - b
# datetime.timedelta(-1, 86399, 999973)

b - a
# datetime.timedelta(0, 0, 27)

获取正确的时差:

(tnow - datetime.datetime.now()).total_seconds()
# output: -1.751166

此答案提供了有关如何安全使用时间增量(处理负值)的更多信息 Link

关于Python 现在日期时间与现在日期时间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48882468/

相关文章:

python - 在 python 中替换正则表达式

java - 如何使用 SimpleDateFormat 解析多种格式的日期

javascript - 为什么 javascript 减去传递给 Date() 函数的 ISO 日期的时区偏移量?

php - 使用 DateInterval 计算两个日期之间的月份,而不在一年内换行

python - 匹配多列忽略pandas中的顺序

python - 如何检测图像中是否存在次要对象

diff - 是否可以在文件之间进行智能比较?

git - 如何只获取更改多于空格的文件名?

linux - 如何处理这个补丁问题

python - 如何从颜色条图像中提取颜色图并将其用于热图中