也许我不理解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

这是为什么?我希望子间隔可以互斥。

最佳答案

从源代码:

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


因此weeks是一种方便的方法,可以将天表示为星期。

关于python - python-dateutil的relativedelta的行为不一致,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41924120/

10-11 22:27