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)兼容。谢谢,我将此错误报告为。