首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Python从用户获取时间数据,以将任务调度到未来10分钟

使用Python从用户获取时间数据,以将任务调度到未来10分钟
EN

Stack Overflow用户
提问于 2012-09-11 22:49:20
回答 3查看 86关注 0票数 0

我正在尝试让Python检查给定的时间是否至少是未来的10分钟。在输入数据时,我总是返回'else‘子句;The scheduled time must be at least 10 minutes from now

到目前为止,我使用的代码如下:

代码语言:javascript
运行
复制
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 = ''

脚本的第二部分再往下一点:

代码语言:javascript
运行
复制
 ### 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')
EN

回答 3

Stack Overflow用户

发布于 2012-09-11 23:02:40

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

例如。

代码语言:javascript
运行
复制
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 = ''
票数 3
EN

Stack Overflow用户

发布于 2012-09-11 22:54:28

这个脚本有几个问题,最明显的是您没有考虑小时滚动。例如,如果时间是下午5点,有人输入了下午6点,从句:

代码语言:javascript
运行
复制
int(self.hr) <= int(schedHr) and int(self.mi) + 10 <= int(schedMi)

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

票数 0
EN

Stack Overflow用户

发布于 2012-09-11 23:16:47

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

代码语言:javascript
运行
复制
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" 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12372450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档