重复函数时datetime中的错误

时间:2018-03-07 21:41:45

标签: python datetime

我正在建立一个时间分割选择器,即如果实际时间是21h34而我选择了3分钟的分割,它将返回21h33(它总是从纯小时开始 - 在这种情况下是21h00,并返回最接近的值)。如果时间是14h17,它将返回14h16。

实施以下代码来解决问题:

import datetime


def last_time(interval):
    now = datetime.datetime.now()
    last_time = now.replace(microsecond=0,second=0,minute=0)
    while True:
        if((last_time < now) & (now < last_time + datetime.timedelta(seconds = interval))):
            return last_time,(last_time + datetime.timedelta(seconds = interval)), \
        ((last_time + datetime.timedelta(seconds = interval)) - now).total_seconds()
            break
        last_time = last_time + datetime.timedelta(seconds = interval)

并执行我们所做的功能:

last_time, next_time, delta = last_time(180) #in GMT

如果我只运行一次该功能,它将没有任何问题。但是,如果我再次运行它,它将返回以下错误:

TypeError: 'datetime.datetime' object is not callable

1 个答案:

答案 0 :(得分:1)

您获得TypeError的原因是因为last_time既是函数又是变量;当你运行第last_time, next_time, delta = last_time(180) #in GMT行时,你基本上覆盖了返回datetime.datetime对象的函数。

值得庆幸的是,解决方案是一个快速修复,只需更改变量名称或函数名称,问题就会停止!

希望有所帮助!