Python 倒计时计时器给了我负数

Python 倒计时计时器给了我负数,python,python-3.x,Python,Python 3.x,我用Python 3制作了一个倒计时计时器。例如,我将月份设置为1,将日期设置为10。当我运行它时,我会得到负数,因为那个日期已经过去了 因此,我的问题是,我如何将年份设置为2017年,这样我就不会得到负数,而是得到392天 倒计时计时器 你不需要手工计算。只需使用datetime模块的功能即可。它提供时间增量计算: import datetime import time target_date = datetime.datetime(2017, 1, 11) timedelta_zero

我用Python 3制作了一个倒计时计时器。例如,我将月份设置为
1
,将日期设置为
10
。当我运行它时,我会得到负数,因为那个日期已经过去了

因此,我的问题是,我如何将年份设置为2017年,这样我就不会得到负数,而是得到392天

倒计时计时器


你不需要手工计算。只需使用
datetime
模块的功能即可。它提供时间增量计算:

import datetime
import time

target_date = datetime.datetime(2017, 1, 11)
timedelta_zero = datetime.timedelta(0)

while True:
    diff = target_date - datetime.datetime.now()
    if diff <= timedelta_zero:
        break
    print(diff)
    time.sleep(1)
print('Takeoff!!!')  
如果你不喜欢微秒,就把它们去掉:

>>> print(str(diff).rsplit('.')[0])
393 days, 17:09:19
您需要
datetime.timedelta(0)
作为时间增量比较的零值。
对于测试,将
target_date
设置为未来几秒钟的日期。不应该有否定的日期

我认为您不需要[python-2.7]标记,因为您使用的是python3,这一点在print语句中很明显,所以我正在编辑它out@RegisteredUser哦,对不起,我不是故意放在里面的。没问题。诚恳地说,Alex:D。提供重现问题所需的最低代码对您非常有帮助。@Dilitiummatrix我现在将着手解决这个问题。感谢您的帮助,我非常感谢。请您解释一下
datetime.timedelta(0)
在代码中的作用,因为如果我把这些都去掉,它会很好地工作。@Alex Ups,这是测试的遗留问题。从我的答案中删除了它。@Alex
datetime.timedelta(0)
实际上是有用途的。当时间差为负值时,我检查它以停止。请参阅我的更新答案。是否有其他方法可以在不使用
datetime.datetime(2017,1,11)
的情况下设置
target\u date
?只是出于好奇,请注意。
393 days, 17:09:19.278093
393 days, 17:09:18.276930
393 days, 17:09:17.274710
393 days, 17:09:16.272841
393 days, 17:09:15.270777
393 days, 17:09:14.268744
393 days, 17:09:13.267112
>>> print(str(diff).rsplit('.')[0])
393 days, 17:09:19