Python:日期之间存在差异的问题
Python: Issue with difference between dates
我想比较两个日期并获得以秒为单位的差异,例如获得截止日期和当前日期时间之间的秒数,但是当减数大于减数时我得到了一些意想不到的结果
import datetime
deadline=datetime.datetime.strptime('2020-06-26 11:18:00','%Y-%m-%d %H:%M:%S')
current=datetime.datetime.strptime('2020-06-26 14:38:00','%Y-%m-%d %H:%M:%S')
result = (deadline - current).seconds #result is 74400
如果你看一下,两个日期时间的日期是相同的,只是时间部分发生了变化。
如果我改变“减法”的顺序,我会得到不同的结果:
result = (current - deadline).seconds #result is 12000
我预计会出现负面结果,因为 current
大于 deadline
,或者至少相同的秒值与操作数的顺序无关。
我想了解发生了什么事?有没有办法得到始终相同的结果?
版本:
python3.7
如果您想知道经过的时间而不是 timedelta 中“秒”位置的值,则需要使用 .total_seconds()
。
特别是,减法产生 74400 在内部表示 -12000 秒时间增量为 -1 天和 +74400 秒。对于另一个减法,它表示为 +0 天和 +12000 秒,因此 .seconds
的结果分别为 74400 和 12000。
如果您认为这是 Python 中的错误,则不是。你提出的是一个错误。因为这就是 Python.
中负数 timedelta
的表示方式
print (datetime.timedelta(seconds=-1).seconds)
# 86399
因为 timedelta
中的秒数被标准化为 0 到 86399 之间的数值。
如果您想要负值,请使用 .total_seconds()
。
result = (deadline - current).total_seconds()
print(result)
# -12000
我想比较两个日期并获得以秒为单位的差异,例如获得截止日期和当前日期时间之间的秒数,但是当减数大于减数时我得到了一些意想不到的结果
import datetime
deadline=datetime.datetime.strptime('2020-06-26 11:18:00','%Y-%m-%d %H:%M:%S')
current=datetime.datetime.strptime('2020-06-26 14:38:00','%Y-%m-%d %H:%M:%S')
result = (deadline - current).seconds #result is 74400
如果你看一下,两个日期时间的日期是相同的,只是时间部分发生了变化。
如果我改变“减法”的顺序,我会得到不同的结果:
result = (current - deadline).seconds #result is 12000
我预计会出现负面结果,因为 current
大于 deadline
,或者至少相同的秒值与操作数的顺序无关。
我想了解发生了什么事?有没有办法得到始终相同的结果?
版本: python3.7
如果您想知道经过的时间而不是 timedelta 中“秒”位置的值,则需要使用 .total_seconds()
。
特别是,减法产生 74400 在内部表示 -12000 秒时间增量为 -1 天和 +74400 秒。对于另一个减法,它表示为 +0 天和 +12000 秒,因此 .seconds
的结果分别为 74400 和 12000。
如果您认为这是 Python 中的错误,则不是。你提出的是一个错误。因为这就是 Python.
中负数timedelta
的表示方式
print (datetime.timedelta(seconds=-1).seconds)
# 86399
因为 timedelta
中的秒数被标准化为 0 到 86399 之间的数值。
如果您想要负值,请使用 .total_seconds()
。
result = (deadline - current).total_seconds()
print(result)
# -12000