使用Timedelta添加27小时后获得3小时差异

时间:2018-06-09 22:54:05

标签: python python-3.x datetime timedelta

进口如下:

from datetime import datetime, timedelta

首先,我看到了当下的日期:

foo = datetime.now()

然后我在27小时后得到以下内容:

bar = foo + timedelta(hours=27)

现在我需要测试一下。为此,我使用另一个变量:

baz = bar-foo

现在我测试barfoo之间的差异:

seconds = baz.seconds
hours = seconds/60/60 # which returns 3.0

我添加了27小时,barfoo之间有3小时的差异。

原因是什么?提前谢谢。

环境

  • Python 3.6.5
  • Manjaro 17.1.10(如果真的很重要)

1 个答案:

答案 0 :(得分:3)

仅检查seconds对象的timedelta属性是不够的。

根据timedelta documentation

  

仅在内部存储微秒

依次考虑这些组件:

days = baz.days
seconds = baz.seconds
microsecs = baz.microseconds

print(days, seconds, microsecs, sep=', ')
1, 10800, 0

您需要单独添加这些内容以获得总timedelta。如果您的目标是提取总秒数,则可以使用total_seconds方法:

totalsecs = baz.total_seconds()  # 97200.0
assert totalsecs / 60 / 60 == 27  # check we have 27 hours