[英]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.