【问题标题】:Getting 3 Hours Difference After Adding 27 Hours with Timedelta使用 Timedelta 添加 27 小时后获得 3 小时差异
【发布时间】:2018-11-19 14:38:58
【问题描述】:

导入如下:

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(如果这真的很重要)

【问题讨论】:

  • str(baz) -> '1 day, 3:00:00'

标签: python python-3.x datetime timedelta


【解决方案1】:

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

根据timedelta documentation

只有 dayssecondsmicroseconds 存储在内部。

依次考虑这些组件:

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

【讨论】:

    猜你喜欢
    • 2020-12-14
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多