1

我想要的是用户输入一个选定的日期,然后从当前日期中减去该日期,然后根据结果创建一个睡眠计时器。

from datetime import tzinfo, timedelta, datetime
def ObtainDate():
    isValid=False
    while not isValid:
        userIn = raw_input("Type Date: mm/dd/yy: ")
        try:
            d1 = datetime.datetime.strptime(userIn, "%m/%d/%y")
            isValid=True
        except:
            print "Invalid Format!\n"
    return d1

t = (datetime.now() - d1).seconds

我当前的当前代码如下所示,但我无法弄清楚如何获取 d1 并从中减去当前日期。

4

2 回答 2

1

由于您正在使用

from datetime import tzinfo, timedelta, datetime

您不再以该名称导入整个 datetime 模块,而是将单个类直接导入脚本的命名空间。因此,您的输入解析语句应如下所示:

d1 = datetime.strptime(userIn, "%m/%d/%y")  # You are no longer

以下将为您提供现在与输入时间之间的秒数差异:

t = (datetime.now() - d1).total_seconds()

至于第二部分,有很多方法可以实现定时器。一种简单的方法是

import time
time.sleep(t)

编辑

这是整个事情:

from datetime import tzinfo, timedelta, datetime

def ObtainDate():
    isValid=False
    while not isValid:
        userIn = raw_input("Type Date: mm/dd/yy: ")
        try:
            d1 = datetime.strptime(userIn, "%m/%d/%y")
            isValid=True
        except:
            print "Invalid Format!\n"
    return d1

t = (ObtainDate() - datetime.now()).total_seconds()
print t
于 2013-09-26T22:59:43.950 回答
1

您的代码有一些简单的错误。这个版本有效(虽然我不确定你到底需要什么,但它应该能让你解决眼前的问题)。

from datetime import datetime

def ObtainDate():
    while True:
        userIn = raw_input("Type Date: mm/dd/yy: ")
        try:
            return datetime.strptime(userIn, "%m/%d/%y")
        except ValueError:
            print "Invalid Format!\n"

t0 = datetime.now()
t1 = ObtainDate()
td = (t1 - t0)

print t0
print t1
print td
print td.total_seconds()

你的主要问题是你没有调用你的函数。我还将您的 while 循环简化为无限循环。除非引发错误,否则 return 语句将跳出循环。

于 2013-09-26T23:39:47.627 回答