【问题标题】:Python3 datetime module strange behaviorPython3 datetime 模块奇怪的行为
【发布时间】:2021-11-08 00:06:55
【问题描述】:

我遇到了 Python3 的 datetime 模块 的一个奇怪行为:我计算日期 "date" 和 "mon" 之间的差异,然后首先将结果差异添加到 "date"照原样,然后将转换为秒的结果差异添加到“日期”。 但是由于某种原因,日期不同,尽管它们应该相同。请告诉我我做错了什么。

date=datetime.datetime(2021,9,4,13,00)
mon=datetime.datetime(2021, 9, 6, 0, 0)
delta=mon-date
print(date+delta)
print(date+datetime.timedelta(seconds=(delta).seconds))

结果:

2021-09-06 00:00:00

2021-09-05 00:00:00

【问题讨论】:

  • @don'ttalkjustcode 不太确定,OP 不太清楚
  • @don'ttalkjustcode 我又看了一遍,total_seconds 是必填项
  • @U12-Forward,在这个问题中,问题是他们使用seconds,而不是total_seconds()
  • @don'ttalkjustcode 哦,是的,buran 刚刚发布了那个
  • @buran 是的准备回答,刚刚看到你的回答

标签: python python-3.x datetime timedelta


【解决方案1】:

datetime.timedelta.seconds 属性不代表周期内的总秒数。对此有datetime.timedelta.total_seconds() 方法。

import datetime
date=datetime.datetime(2021,9,4,13,00)
mon=datetime.datetime(2021, 9, 6, 0, 0)
delta=mon-date
print(delta, delta.seconds)
print(delta == datetime.timedelta(seconds=delta.seconds))
print(date+delta)
print(date+datetime.timedelta(seconds=delta.total_seconds()))

输出

1 day, 11:00:00 39600
False
2021-09-06 00:00:00
2021-09-06 00:00:00

in the docs 所述,timedelta.seconds 属性是介于 0 和 86399 之间的秒数。

【讨论】:

    猜你喜欢
    • 2012-05-25
    • 1970-01-01
    • 2016-07-09
    • 2022-11-14
    • 2013-10-29
    • 2014-09-30
    • 1970-01-01
    • 2021-03-03
    • 2012-03-20
    相关资源
    最近更新 更多