如何从字符串获取相对时间?

时间:2018-09-02 09:21:38

标签: python datetime

用户将输入7d 5m 4w7min6h等作为字符串,但是我如何将其转换为将用于计时器的datetime对象。 我尝试使用

time = datetime.datetime.strptime(str, "%M %H %d %m")

但这给了我很大的时间,而不是很长。如果用户输入“ 35min”或“ 35m”,time应该是现在的时间+ 1min

1 个答案:

答案 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分析用户输入以提取所需的秒数。否则,您可能会更好地实现自己的解析器。