python-dateutil的relativedelta的行为不一致

时间:2017-01-29 17:57:43

标签: python python-dateutil 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 = 1rd.months = 1rd.weeks = 3rd.days = 25

为什么?我希望子区间互相排斥。

1 个答案:

答案 0 :(得分:3)

来自源代码:

@property
def weeks(self):
    return self.days // 7
@weeks.setter
def weeks(self, value):
    self.days = self.days - (self.weeks * 7) + value * 7

所以weeks是一种将日数表示为周的简便方法。