python - 人类时间和日期时间?
问题描述
我正在尝试构建一个 dpy 命令,我可以在其中获取一个字符串,例如“ Tomorrow at 6pm do the dishes
”,然后获取一个日期时间对象和一个字符串。
我可以轻松地将所有内容变成 dpy 的自定义转换器,我只需要一些帮助来解析字符串。有点像这样(不是真正的代码示例):
@bot.command()
async def remind(ctx, *, when: TimeConverter):
print(when.reason)
print(when.datetime)
!remind 6h do the dishes
!remind two days do the dishes
我找到了一个名为 的库dateparser
,它将人类可读的时间转换为日期时间,但它无法处理我想要的。我该怎么做这样的事情?
解决方案
好吧,如果您可以获取格式为 的字符串,则5h
可以将指标分开。这就是 Dyno 和 Mee6 等流行机器人处理静音计时器的方式。
from datetime import datetime, timedelta
when = when.lower()
seconds = int(when[:-1]) * {"s": 1, "m": 60, "h": 3600, "d": 86400}[when[-1]]
time = datetime.utcnow() + timedelta(seconds=seconds)
推荐阅读
- javascript - 通过图表功能为图表上的一个系列和一个点启用 Highcharts 数据表
- git - 一个文件跨多个目录的版本控制,避免与现有 Git 存储库冲突
- mfc - 在 MFC 对话框中的 CStatic 控件之间拖放
- c# - 三元运算符 || 未定义或导入预定义类型“System.ValueTuple`3”
- c# - 当我们将 double 除以 float 而不进行任何转换时会发生什么?
- python - 如何在 GUI 程序中对齐标签和输入框?
- php - PHP openssl_sign 输出奇怪的字符
- reactjs - Nextjs 在 Android 4.4 上静态构建 - 未定义集
- android - 用于在后台运行日常任务的 Android WorkManager api
- java - 在 datasnapshot 中设置 Boolean 设置为 true 后返回 null