Python 以秒为单位从时间戳中减去月份

Python 以秒为单位从时间戳中减去月份,python,datetime,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_subs

我想用秒从时间戳中减去月份。以下是我正在做的:

>>> 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个月的示例,days datetime.datetime(2015,5,3,6,0)是错误的。有没有更好的方法来减去月份,这只会改变月份数,而不会改变天数


提前谢谢。

正如@DainDwarf所建议的,似乎是你的朋友。它计算相对于另一个日期值的日期

它处理棘手的情况(例如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)

您可以尝试使用
dateutil.relativedelta
module。想详细说明您的目标吗?一个月不是一个固定的时间跨度,而是随着月份的变化而变化。你想要月的同一天但提前九个月吗?是的,就是这样,我只想更改月值而不更改天或其他。那么11月30日之前的九个月是哪一天?我只想减去月天数,实际上总是1,如果我在11个月,减去9个月,我想在第2个月和第1天。这是一个解决方案,但我必须安装这个模块。