[英]Parsing human-readable recurring dates in Python
问题。 在我的Django应用程序中,用户为计划执行创建任务。 用户是非技术性的,如果他们可以编写传统的人类可读表达式来定义何时执行某些任务,那将会很棒,例如:
这是受Todoist的启发。 目前,只需要日期; 没有时间。 我花了几个小时用谷歌搜索图书馆来做这件事,但没有运气。 我期待一个函数,比如in_range(expression, date)
,这样:
>>> in_range('every monday, wednesday', date(2014, 4, 28))
True
>>> in_range('every end of month', date(2014, 5, 12))
False
>>> in_range('every millenium', date(2014, 5, 8))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: unknown token "millenium".
变种。 这就是我所看到的。
datetime
库执行日期解析,但不按日期解析日期范围。 rrule
支持重复日期,非常实用,但仍不支持解析。 那么,有没有Python代码片段或我错过的库来做这件事? 如果没有,我将自己编写解析器。 如果它看起来不是太糟糕,想在开源中发布它。
Recurrent是一个库,它将进行自然语言日期解析,并支持重复日期。 它与您提供的API不匹配,但允许您创建可与Python的datetime
库一起使用的规则。
从他们的Github页面:
自然语言解析日期和重复事件
例子
日期时间
- 下个星期二
- 明天
- 一个小时内
重复发生的事件
- 在工作日
- 从2010年1月1日到2020年12月25日,每月四分之一
- 每个人一直到下个月
- 11月的第四个星期四,每年一次
- 星期二和星期四3点15分
凌乱的弦乐
- 请在周二中午每隔一天安排一次会议
- 下周二晚上11点设置闹钟
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.