如何使用datetime来计算持续时间和停止时间?

时间:2017-02-10 21:57:57

标签: python python-2.7 datetime

我使用Python 2.7并希望使用日期时间函数来计算用户定义的运行小型泵的时间。我知道我错过了一些明显的东西,但我一直在寻找,直到我无法直接看到。我有一个textCtrl,用户将输入他希望泵运行的分钟数。然后单击按钮将启动调度程序并检查是否有时间关闭泵:

> (size1 '((((7) 9 (11)))))
size is 1

问题是def timedPump(val): now = datetime.datetime.now() timeOff = now + datetime.timedelta(minutes=int(val)) if timeOff > now: print 'pumpOn' else: print 'pumpOff' return True 每次都会更新。如何使datetime.datetime.now() =单击按钮的时间?

3 个答案:

答案 0 :(得分:1)

这将是我解决问题的方法:

from time import sleep

def pumpcheck(timer_in_minutes):
    time_clicked = datetime.datetime.now()
    now = time_clicked
    timeDiff = datetime.timedelta(minutes=int(timer_in_minutes))
    while (time_clicked + timeDiff > now):
        print 'pumpOn'
        now = datetime.datetime.now()
        sleep(2)
    print 'pumpOff'

它节省了按下按钮的时间,然后检查循环,如果时间是rfeached,如果没有,它会更新当前时间,说泵仍然打开并且睡了一会儿就没有bloack cpu recources 。到达时间时,它表示泵送

答案 1 :(得分:0)

有关如何评估timedPump的信息缺失。我想这是一个简单的循环。

需要做的是必须有两个功能,一个用于设置turnOff-time,另一个用于评估天气以打开/关闭泵。 这可以作为类的两种方法实现:

class PumpControl(object):
    def setTime(self, val):
        now = datetime.now()
        self.timeOff=now + timedelta(minutes=int(val))
        print 'pumpOn'

    def checkTime(self):
        if self.timeOff < datetime.now():
            print 'pumpOff'

这样你就可以创建一个PumpControl对象,然后重复checkTime:

controller = PumpControl()
#inside your loop
controller.checkTime()
#when you want to set the time
controller.setTime(val)

这也适用于线程,所以你可以让一个线程重复,另一个线程要求时间。

答案 2 :(得分:0)

这听起来像是单一功能范围之外的东西。将逻辑拆分为两个函数,或使用类来保留start_time