rma*_*iar 3 python rrule python-dateutil
我一直在尝试使用 python 的dateutil rrule包解析重复规则
但是,我收到了一个与我理解重复规则的方式不一致的奇怪错误
错误是
ValueError: RRULE UNTIL values must be specified in UTC when DTSTART is timezone-aware
我正在调用的函数是
recurrence = "RRULE:FREQ=WEEKLY;UNTIL=20181206T075959Z;BYDAY=MO,WE,FR"
rule = rrulestr(recurrence, dtstart=datetime.now())
如果直到结构为UNTIL=20181206T075959Z,那不是在 UTC 中吗?为什么会出现这个错误,什么是合适的解决方案?问题是,这适用于
"RRULE:FREQ=WEEKLY;UNTIL=20191206T075959;BYDAY=MO,WE,FR",我认为这不是 UTC,因为它缺少“Z”
这可能是一个令人困惑的错误消息,因为它取自 RFC 规范,但并没有真正解释上下文。
问题是dtstart并且UNTIL必须既是天真的,也必须是时区感知的,并且规范实际上指定UNTIL在这种情况下必须是 UTC。
要修复您的代码,您只需使dtstart时区感知:
from dateutil.tz import UTC
recurrence = "RRULE:FREQ=WEEKLY;UNTIL=20181206T075959Z;BYDAY=MO,WE,FR"
rule = rrulestr(recurrence, dtstart=datetime.now(UTC))
Run Code Online (Sandbox Code Playgroud)
请随时在dateutil 的问题跟踪器上报告令人困惑的错误消息。
| 归档时间: |
|
| 查看次数: |
1216 次 |
| 最近记录: |