我想要创建基于上一季度结束日期的季度日期。这意味着,对于每个季度的结束日期,我必须减去3个月来计算季度的开始日期和前一个季度的结束日期。
问题是,当我这么做
ref_date - relativedelta(months=+3)而ref_date是6月30日,它返回3月30日,而它应该返回3月31日。有什么解决办法吗?
发布于 2022-01-11 14:22:53
假设您正在使用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-31https://stackoverflow.com/questions/70666041
复制相似问题