繁体   English   中英

使用Python从用户那里获取时间数据以安排未来10分钟的任务

[英]Getting time data from user using Python to schedule task 10 mins into the future

我试图让Python检查给定的时间是否至少是未来10分钟。 输入数据时,我总是会返回“ else”子句; The scheduled time must be at least 10 minutes from now
到目前为止,这是我正在使用的代码:

while len(schedTime) == 0:
        schedTime = raw_input('Scheduled Time (hh:mm): ')

        schedHr = schedTime.split(':')[0]
        schedMi = schedTime.split(':')[1]

        try:
            testTime = int(schedHr)
            testTime = int(schedMi)
        except:
            print 'The scheduled time must be in the format hh:mm)'
            schedTime = ''
            continue

        if int(self.hr) <= int(schedHr) and int(self.mi) + 10 <= int(schedMi):
            pass
        else:
            print 'The scheduled time must be at least 10 minutes from now'
            schedTime = ''

脚本的第二部分稍微向下一些:

 ### Get the current time
    now  = datetime.datetime.now()
    yrF = now.strftime('%Y')
    moF = now.strftime('%m')
    dyF = now.strftime('%d')

    then = now + datetime.timedelta(minutes=10)
    self.hr = then.strftime('%H')
    self.mi = then.strftime('%M')

考虑使用datetime库: http : //docs.python.org/library/datetime.html 您可以创建两个timedelta对象,一个用于当前时刻,一个用于计划时间。 使用减法,您可以查看到现在的计划时间是否少于10分钟。

例如

t1 = datetime.timedelta(hours=self.hr, minutes=self.mi)
t2 = datetime.timedelta(hours=schedHr, minutes=schedMi)
t3 = t2 - t1
if t3.seconds < 600:
    print 'The scheduled time must be at least 10 minutes from now'
    schedTime = ''

这个脚本有几个问题,最明显的是您没有考虑小时数转换。 例如,如果时间是下午5点,有人放了6点,则子句:

int(self.hr) <= int(schedHr) and int(self.mi) + 10 <= int(schedMi)

由于self.mi为00而schedMi为00,因此将为false。

您应该使用一个timedelta对象。 例如:

tdelta = datetime.timedelta(minutes=10)
#read in user_time from command line
current_time = datetime.datetime.now()
if user_time < current_time + tdelta:
    print "Something is wrong here buddy" 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM