人类时间和日期时间?

问题描述

我正在尝试构建一个 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)