首页 > 解决方案 > 返回一年中特定日期的上个月

问题描述

我有以下代码用于计算日期的上个月:

from dateutil import parser, relativedelta
import datetime

@staticmethod
def get_previous_month(date):
    previous_month = date - relativedelta.relativedelta(months=1)
    return previous_month

我认为这行得通,但我认为它没有考虑到年份。

我将 datetime 对象作为参数传递。

datetime.date(1990, 4, 30)上个月应该是:

datetime.date(1990, 3, 31)但它返回:

datetime.date(1990, 3, 30)

我也尝试指定年份但无济于事。

标签: pythondatetime

解决方案


好吧,datetime.date(1990, 4, 30) IS 3 的前一个月,所以图书馆实际上是正确的返回datetime.date(1990, 3, 30)

问题出在问题中-您真正想要的是上个月的最后一天

def get_last_day_of_previous_month(d):
    return d.replace(day=1) - datetime.timedelta(days=1)

推荐阅读