python relativedelta 在 31 个月内没有工作
python relativedelta not working for months of 31
我想根据上一季度的结束日期创建季度日期。
这意味着,对于每个季度的结束日期,我必须减去 3 个月才能计算出季度的开始日期和上一季度的结束日期。
问题是,当我这样做时
ref_date - relativedelta(months=+3)
和 ref_date 是 6 月 30 日,它 return 是 3 月 30 日,而它应该是 return 3 月 31 日。
有什么解决办法吗?
假设您正在处理 datetime.date 个对象。
您可以使用 calendar.monthrange
检查一年中某月有多少天,并将其用作您的日期,而不仅仅是否定结果。当你弄清楚你必须创建一个新的 datetime.date
因为它的属性是不可写的:
import datetime
from dateutil.relativedelta import relativedelta
import calendar
ref_date = datetime.date(2022, 6, 30)
end_date = ref_date - relativedelta(months=3)
n_days = calendar.monthrange(end_date.year, end_date.month)[1]
end_date = datetime.date(end_date.year, end_date.month, n_days)
print(end_date)
输出:
2022-03-31
我想根据上一季度的结束日期创建季度日期。 这意味着,对于每个季度的结束日期,我必须减去 3 个月才能计算出季度的开始日期和上一季度的结束日期。
问题是,当我这样做时
ref_date - relativedelta(months=+3)
和 ref_date 是 6 月 30 日,它 return 是 3 月 30 日,而它应该是 return 3 月 31 日。 有什么解决办法吗?
假设您正在处理 datetime.date 个对象。
您可以使用 calendar.monthrange
检查一年中某月有多少天,并将其用作您的日期,而不仅仅是否定结果。当你弄清楚你必须创建一个新的 datetime.date
因为它的属性是不可写的:
import datetime
from dateutil.relativedelta import relativedelta
import calendar
ref_date = datetime.date(2022, 6, 30)
end_date = ref_date - relativedelta(months=3)
n_days = calendar.monthrange(end_date.year, end_date.month)[1]
end_date = datetime.date(end_date.year, end_date.month, n_days)
print(end_date)
输出:
2022-03-31