减去第二个时间戳的月份

时间:2016-02-12 10:35:59

标签: python datetime

我想从第二个时间戳中减去几个月。这就是我正在做的事情:

>>> ts = 1454284800
>>> date_object = datetime.datetime.strptime(time.strftime('%Y%m%d', time.gmtime(1454284800)), '%Y%m%d')
>>> date_object
datetime.datetime(2016, 2, 1, 0, 0)
>>> date_substract = date_object - datetime.timedelta(9*365/12.0)
>>> date_substract
datetime.datetime(2015, 5, 3, 6, 0)
>>> 

这取决于我想要减去的月数的值,但是例如9个月的日期,datetime.datetime(2015,5,3, 6 ,0)是错误的。是否有更好的方法来减去月数,这只会改变月数而不是几天。

提前致谢。

1 个答案:

答案 0 :(得分:2)

根据@DainDwarf的建议,dateutil.relativedelta似乎是你的朋友。它计算相对于另一个日期值的日期。

它处理棘手的情况(例如3月31日前一个月),但您需要检查分辨率是否符合您的要求

date = datetime.datetime(year=2016, month=3, day=31)
date + dateutil.relativedelta.relativedelta(date, months=-1)
=> datetime.datetime(2016, 2, 29, 0, 0)