用户将输入7d 5m 4w
或7min
或6h
等作为字符串,但是我如何将其转换为将用于计时器的datetime对象。
我尝试使用
time = datetime.datetime.strptime(str, "%M %H %d %m")
但这给了我很大的时间,而不是很长。如果用户输入“ 35min”或“ 35m”,time
应该是现在的时间+ 1min
答案 0 :(得分:0)
您可以减去两个datetime
对象。结果是一个datetime.timedelta
对象:
started = datetime.datetime.now()
str = "20 12 01 01 2019"
time = datetime.datetime.strptime(str, "%M %H %d %m %Y")
diff = time - started
print(str(diff))
print(diff.total_seconds())
这是输出:
121 days, 0:52:12.768755
10457532.768755
根据您的评论:
datetime.datetime.now() + datetime.timedelta(minutes=60)
创建一个datetime.datetime
对象,将now
移动一小时。
这是一种更简单的方法:time.time()
自1970年1月1日起测量秒数(浮点数)。因此,如果您想在0.1秒内做一些工作,可以编写:
import time
started = time.time()
while time.time() < started + 0.1:
print("do some work")
仅当您的用户遵循指定的格式时,才能使用datetime.datetime.strptime
分析用户输入以提取所需的秒数。否则,您可能会更好地实现自己的解析器。