我想要的是用户输入所选日期,并从当前日期减去该日期,然后根据结果创建一个睡眠定时器。
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并从中减去当前日期。
答案 0 :(得分:1)
由于您使用
导入课程from datetime import tzinfo, timedelta, 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
答案 1 :(得分: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语句将跳出循环。