从datetime.now()减去3个月

时间:2019-11-20 10:42:19

标签: python

如何从日期中删除3个月?尝试使用relativedelta,但是我没有lib,所以还有另一种方法吗?

from datetime import datetime
now = datetime.now()
print("timestamp =", now)

3 个答案:

答案 0 :(得分:1)

您可以使用:

import datetime

a = datetime.datetime.now()

b = a - datetime.timedelta(weeks=12)

请注意,您不能输入月份,而只能输入几周和几天甚至更短

答案 1 :(得分:0)

也许,用datetime.timedelta减去可以帮助您估计日期:

import datetime
datetime.datetime(2019,5,31) - datetime.timedelta(3*365.25/12)

该结果并不完全准确,因为它不能以通常的方式说明years年,但是对于一年之内的精度较低的计算就足够了。如果需要准确性,则需要使用以下方法。

对于dateutil.relativedelta,您需要先使用pip install python-dateutil安装模块,然后以以下方式使用它:

import datetime
from dateutil.relativedelta import relativedelta
datetime.datetime(2019,5,31) - relativedelta(months=3)

答案 2 :(得分:0)

如果要对日期时间对象执行复杂的操作,我只建议您使用arrow库来为您处理所有边缘情况。

此库的文档可在这里找到:https://arrow.readthedocs.io/en/latest/

例如您的情况:

>>> import arrow
>>> a = arrow.utcnow()
>>> a
<Arrow [2019-11-20T13:03:52.518238+00:00]>
>>> a.datetime
datetime.datetime(2019, 11, 20, 13, 3, 52, 518238, tzinfo=tzutc())
>>> b = a.shift(months=-3)
>>> b
<Arrow [2019-08-20T13:03:52.518238+00:00]>
>>> b.datetime
datetime.datetime(2019, 8, 20, 13, 3, 52, 518238, tzinfo=tzutc())