首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Python解析人类可读的循环日期

用Python解析人类可读的循环日期
EN

Stack Overflow用户
提问于 2014-04-26 15:19:47
回答 1查看 1.7K关注 0票数 5

问题.在我的Django应用程序中,用户创建任务以进行预定的执行.用户是相当非技术的,如果他们能够编写常规的人类可读的表达式来定义什么时候执行某些任务是很好的,例如:

  • 每星期一
  • 每周五,结婚
  • 每日
  • 每月1、14、20
  • 每个星期五;每个月底

这是受托多斯特启发的。就目前而言,只有日期是必要的;没有时间。我花了几个小时在谷歌上搜索一个库来做这个,但是没有运气。我期待一个函数,比如说,in_range(expression, date),这样:

代码语言:javascript
运行
复制
>>> 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-crontabPython-croniter接受标准Unix语法(允许指定工作日等),但是这种语法仍然过于技术性,如果可能的话,我想避免它。
  • 箭头待定时间不支持该特性。

那么,是否有一个Python代码片段,或一个库,我错过了,做这件事?如果不是,我将自己编写解析器。如果看起来还不算太糟的话,想要在开源中发布它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-26 21:52:46

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

从他们的Github页面:

日期和重复事件的自然语言解析 示例 日期乘以

  • 下星期二
  • 明天
  • 一小时内

循环事件

  • 平日
  • 从2010年1月1日至2020年12月25日每四个月一次。
  • 直到下个月
  • 每年11月的第四个星期四
  • 星期二和星期四3:15

杂乱字符串

  • 请把会议安排在每隔一个星期二中午。
  • 为下周二晚上11点设置一个警报
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23312829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档