为什么将dateutil rrule转换为字符串并返回使其失去时区信息?

时间:2017-02-08 14:58:16

标签: python python-dateutil

dateutil.rrule模块有一个rrule类,它有一个自定义__str__方法将其实例转换为字符串,而一个rrulestr函数则执行相反的操作,即将字符串转换回对象。

然而,似乎_dtstart rrule属性在转换为字符串并返回时会丢失其时区信息。例如,在以下脚本中:

from dateutil.rrule import rrule, rrulestr, DAILY
from dateutil.parser import parse

start = parse("8 Feb 2017 14:00 UTC")
my_rrule = rrule(DAILY, dtstart=start)

my_rrule2 = rrulestr(str(my_rrule))

assert my_rrule._dtstart == my_rrule2._dtstart

断言导致

TypeError: can't compare offset-naive and offset-aware datetimes

具体来说,我注意到my_rrule.dtstart具有表示

datetime.datetime(2017, 2, 8, 14, 0, tzinfo=tzutc())

my_rrule2._dtstart

datetime.datetime(2017, 2, 8, 14, 0)

为什么时区信息丢失了?这不是__str__ / rrulestr组合中的缺陷吗?

0 个答案:

没有答案