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

Python 为什么将dateutil rrule转换为字符串并返回会使其丢失时区信息?,python,python-dateutil,Python,Python Dateutil,该模块有一个rrule类,该类有一个自定义的\uuuuu str\uuuu方法将其实例转换为字符串,还有一个rrulestr函数,其作用相反,即将字符串转换回对象 但是,rrule的\u dtstart属性在转换为字符串并返回时似乎会丢失其时区信息。例如,在以下脚本中: from dateutil.rrule import rrule, rrulestr, DAILY from dateutil.parser import parse start = parse("8 Feb 2017 14:

该模块有一个
rrule
类,该类有一个自定义的
\uuuuu str\uuuu
方法将其实例转换为字符串,还有一个
rrulestr
函数,其作用相反,即将字符串转换回对象

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

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\u rrule2.\u dtstart

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

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

这可能是一个错误,可以在上报告。一般来说,使用不受欢迎的时区不是一个好主意,因为在DST附近会出现一些歧义,但对于UTC和其他固定偏移区域,这不是一个问题。顺便说一句,这可能很难正确执行,除非您使用的是相对不受欢迎的
tzical
时区,由于RRULE规范有一个时区规范,它不一定与已编译的zoneinfo文件(例如Olson zones)兼容。谢谢,我将此错误报告为。