python-dateutil 的 relativedelta 行为不一致
Inconsistent behavior of python-dateutil's relativedelta
也许我不明白 relativedelta
背后的意图,但是行为上的不一致,即较小的子区间被折叠成较大的子区间,以便表示最小的子区间集,这似乎是不可取的。具体来说,几个月似乎可以分解成几年,但天数和周数仍然不明确(即天数 = 周数 * 7 + 剩余天数)。
from dateutil.parsers import parse as dparse
from dateutil.relativedelta import relativedelta as rdelta
start = dparse('12/3/15')
end = dparse('1/28/17')
rd = rdelta(end, start)
此处 rd.years = 1
、rd.months = 1
、rd.weeks = 3
和 rd.days = 25
。
这是为什么?我希望子区间相互排斥。
来自源代码:
@property
def weeks(self):
return self.days // 7
@weeks.setter
def weeks(self, value):
self.days = self.days - (self.weeks * 7) + value * 7
所以 weeks
是一种将天表示为周的便捷方法。
也许我不明白 relativedelta
背后的意图,但是行为上的不一致,即较小的子区间被折叠成较大的子区间,以便表示最小的子区间集,这似乎是不可取的。具体来说,几个月似乎可以分解成几年,但天数和周数仍然不明确(即天数 = 周数 * 7 + 剩余天数)。
from dateutil.parsers import parse as dparse
from dateutil.relativedelta import relativedelta as rdelta
start = dparse('12/3/15')
end = dparse('1/28/17')
rd = rdelta(end, start)
此处 rd.years = 1
、rd.months = 1
、rd.weeks = 3
和 rd.days = 25
。
这是为什么?我希望子区间相互排斥。
来自源代码:
@property
def weeks(self):
return self.days // 7
@weeks.setter
def weeks(self, value):
self.days = self.days - (self.weeks * 7) + value * 7
所以 weeks
是一种将天表示为周的便捷方法。