python - 如何从字符串中获取相对时间?
问题描述
例如,用户将输入7d 5m 4w
或7min
或6h
等作为字符串,但我如何将其转换为我将用于计时器的日期时间对象。我试过使用
time = datetime.datetime.strptime(str, "%M %H %d %m")
但这给了我一个特别的时间,而不是一个长度。如果用户输入“35min”或“35m”time
应该是现在的时间+1min
解决方案
您可以减去两个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
仅在您的用户遵循指定格式时才有效。否则,您最好为此实现自己的解析器。
推荐阅读
- amazon-web-services - AWS 是否允许我们使用 SES 为客户预处理电子邮件?
- javascript - 使用 Javascript/HTML 使用 REST 服务
- arrays - Excel 计算行中两个词的出现次数
- javascript - 汇总:从 Lodash 导入功能时“导入不存在的导出”
- python - 如何使用 PYQT5 在 QTreeView 中选择和编辑新创建的文件夹
- c++ - std::atomic 与非原子变量的性能是什么?
- javascript - Laravel 无法从 Vue-multiselect 获取值
- python - 指定轴时,Numpy 计算不同的标准偏差
- ios - 将 Reactive Cocoa 代码转换为 RxSwift?
- firebase - 在 Firestore 文档中添加时间戳