首页 > 解决方案 > 如何从字符串中获取相对时间?

问题描述

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

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

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

标签: pythondatetime

解决方案


您可以减去两个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()测量自 1.1.1970 以来的秒数(作为浮点数)。所以如果你想在 0.1 秒内做一些工作,你可以写:

import time

started = time.time()
while time.time() < started + 0.1:
    print("do some work")

解析用户输入以提取所需的秒数,datetime.datetime.strptime仅在您的用户遵循指定格式时才有效。否则,您最好为此实现自己的解析器。


推荐阅读