在Python中解析人类可读的重复日期

在Python中解析人类可读的重复日期,python,django,date,python-dateutil,python-datetime,Python,Django,Date,Python Dateutil,Python Datetime,问题。在my Django应用程序中,用户为计划执行创建任务。用户是非常非技术性的,如果他们能够编写常规的人类可读表达式来定义何时执行某些任务,那就太好了,例如: 每周一 每周五、周三 每日 每月1日、14日、20日 每周五;每月底 这一点的灵感来自于。现在,只需要日期;没有时间。我花了几个小时在谷歌上搜索一个图书馆来做这件事,但运气不好。我希望在_范围(表达式、日期)中有一个函数,例如,,这样: >>> in_range('every monday, wednesday'

问题。在my Django应用程序中,用户为计划执行创建任务。用户是非常非技术性的,如果他们能够编写常规的人类可读表达式来定义何时执行某些任务,那就太好了,例如:

  • 每周一
  • 每周五、周三
  • 每日
  • 每月1日、14日、20日
  • 每周五;每月底
这一点的灵感来自于。现在,只需要日期;没有时间。我花了几个小时在谷歌上搜索一个图书馆来做这件事,但运气不好。我希望在_范围(表达式、日期)中有一个函数,例如,
,这样:

>>> 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".
>>在_范围内('每周一、周三',日期(2014年4月28日))
真的
>>>在_范围内(“每个月末”,日期(2014年5月12日))
假的
>>>在_范围内(“每千年”,日期(2014年5月8日))
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ValueError:未知标记“millenium”。
变体。这就是我所看到的

  • 标准的
    datetime
    库进行日期解析,但不进行如上所述的日期范围解析
  • -支持通过
    rrule
    重复日期,功能非常强大,但仍不支持解析
  • 并且接受标准的Unix crontab语法(并允许指定工作日等),但这种语法仍然太过技术化,如果可能的话,我希望避免使用
  • 并且不支持该功能
那么,有没有我错过的Python代码片段或库来做这件事?如果没有,我将自己编写解析器。如果它看起来不太糟糕的话,我想在开源中发布它。

是一个库,它将执行自然语言日期解析,并支持重复日期。它与您提供的API不匹配,但允许您创建可与Python的
datetime
库一起使用的规则

从他们的Github页面:

日期和重复事件的自然语言解析

例子 日期时间

  • 下周二
  • 明天
  • 一小时后
重复事件

  • 平日
  • 从2010年1月1日到2020年12月25日,每月四分之一
  • 每周四到下个月
  • 每年11月的第四个星期四
  • 周二和周四3:15
凌乱的字符串

  • 请把会议安排在每隔周二中午
  • 设置下周二晚上11点的闹钟

非常感谢你!这正是我要找的东西!