不知道如何正确描述我的问题,但是当我在while语句中比较两个日期时间对象时,整个程序将停止工作。
我有一个方法work()

import time
import datetime
def work():
    now = None
    intr = 10.0
    d = datetime.datetime.utcnow()
    least_time = datetime.datetime.combine(datetime.datetime.today(), datetime.time(10, 10, 00))
    finish = datetime.datetime.combine(datetime.datetime.today(), datetime.time(10, 10, 20))
    if datetime.datetime.today().weekday() == 0:
        least_time = datetime.datetime.combine(datetime.datetime.today(), datetime.time(11,10,00))
        finish = datetime.datetime.combine(datetime.datetime.today(), datetime.time(11,10,20))
    while d <= finish:
        d = datetime.datetime.utcnow()
        if intr > 1 and d >= least_time:
            intr = 1
            print("Interval set to 1 sec")
        if now == None:
            now = time.time()
        if time.time() - now >= intr:
            print("Work")
            print("_____")
            now = None
    print("End")


而且,如果我在该方法之前调用print()或其他方法:

print("1")
print("2")
print("3")
work()


该程序只是空闲,什么也不做。

最佳答案

发生什么情况取决于您当前的时区。
调用datetime.datetime.utcnow()会以UTC给出日期时间,
datetime.datetime.today()为您提供时区(计算机具有的)的当前日期时间:

变更:

d = datetime.datetime.utcnow()


至:

d = datetime.datetime.now()


或者:

d = datetime.datetime.today()


将解决您的问题。

关于python - 在while语句中比较两个日期时,程序处于空闲状态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41297175/

10-11 22:04