问题。在我的 Django 应用程序中,用户为计划执行创建任务。用户是相当非技术性的,如果他们可以编写常规的人类可读表达式来定义何时执行某些任务,那就太好了,例如:
- 每逢星期一
- 每周五、周三
- 日常的
- 每月 1 日、14 日、20 日
- 每个星期五;每个月底
这是由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
库进行日期解析,但不是如上所述的日期范围解析。 - Python-dateutil - 通过 支持重复日期
rrule
,非常实用,但仍然不支持解析。 - Python-crontab和Python-croniter接受标准的 Unix crontab 语法(并允许指定工作日等),但这种语法仍然过于技术性,我想尽可能避免使用它。
- Arrow和Parsedatetime不支持该功能。
那么,是否有 Python 代码片段或我错过的库来做这件事?如果没有,我将自己编写解析器。如果它看起来还不错,想在开源中发布它。