我正在用Python做一些时间计算。
目标:
部分原因是:
给定日期,添加时间间隔(X年,X个月,X周),返回日期
即
input args:input_time(datetime.date),interval(datetime.timedelta)
return:datetime.date
我查看了datetime和datetime.timedelta文档
class datetime.timedelta(days = 0,seconds = 0,microseconds = 0,milliseconds = 0,minutes = 0,hours = 0,weeks = 0)¶。
如果我想添加一定数小时或数周,这些似乎运作良好。然而,
问题:
我正在尝试实施日期+ 1年等操作,但无法弄明白
例如
start = datetime.datetime(2000, 1, 1)
# expected output: datetime.datetime(2001, 1, 1)
# with the weeks, etc arguments given in timedelta, this fails unsurprisingly e.g
start + datetime.timedelta(weeks = 52)
# returns datetime.datetime(2000, 12, 30, 0, 0)
解决办法:timedelta 不支持年限,因为一年的持续时间取决于哪一年(例如,闰年是2月29日)。
您可以使用relativedelta替代,它确实支持years并考虑添加的基准日期:
>>> from dateutil.relativedelta import relativedelta
>>> now = datetime.now()
>>> now
datetime.datetime(2019, 1, 27, 19, 4, 11, 628081)
>>> now + relativedelta(years=1)
datetime.datetime(2020, 1, 27, 19, 4, 11, 628081)








暂无数据