从Python中的日期减去一个月?

时间:2016-07-05 10:04:15

标签: python datetime

我需要从任何日期开始上个月的第一天。 我知道我可以使用monthdelta(datetime(2010,3,30), -1)来获取上个月,但它不会在第一天返回。

3 个答案:

答案 0 :(得分:4)

这可以通过首先计算当前月份的第一天(或任何给定日期),然后使用datetime.timedelta(days = 1)减去它来获得,这将为您提供上个月的最后一天。

为了演示,这是一个示例代码:

import datetime

def get_lastday(current):
    _first_day = current.replace(day=1)
    prev_month_lastday = _first_day - datetime.timedelta(days=1)
    return prev_month_lastday.replace(day=1)

答案 1 :(得分:3)

试试这个:

from datetime import date
d = date.today()
d.replace(
    year=d.year if d.month > 1 else d.year - 1,
    month=d.month - 1 if d.month > 1 else 12,
    day=1
)

答案 2 :(得分:2)

试试这样。使用datetimedatetutil

(如果datetutil无法安装pip install python-dateutil

In [1]: from datetime import datetime
In [2]: import dateutil.relativedelta
In [3]: today_date = datetime.now().date()
In [4]: today_date
Out[1]: datetime.date(2016, 7, 5)
In [5]: last_month = today_date - dateutil.relativedelta.relativedelta(months=1)
In [6]: last_mont_first_date = last_month.replace(day=1)
In [7]: last_mont_first_date
Out[2]: datetime.date(2016, 6, 1)

<强>输入:

datetime.date(2016, 7, 5)

<强>输出

datetime.date(2016, 6, 1)