首页 > 解决方案 > 人类时间和日期时间?

问题描述

我正在尝试构建一个 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,它将人类可读的时间转换为日期时间,但它无法处理我想要的。我该怎么做这样的事情?

标签: pythondatetimediscord.pydate-parsing

解决方案


好吧,如果您可以获取格式为 的字符串,则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)

推荐阅读