在这里输入图像描述,我上面写的代码工作得很好,但我希望这个月的数值日(%d)保持不变(30),直到2月28日。2月之后的日值保持在28,这一事实导致我的“while”循环条件再进行一次迭代,因为“open_date”的值将不等于“到期日”,这是由于日值从30更改为28。当循环条件为(2026-06-30 < 2026-06-30)时,循环条件变为(2026-06-28 < 2026-06-30),此时它将评估为“False”,而日期2026-06-30将是列表中预期的最后一项。那么,我如何才能使用“相对论性”函数只增加一个月而不影响一天呢?
发布于 2022-08-24 09:22:03
相对人塔的文档还显示了设置日期的day= (不要使用添加天数的days= )
.relativedelta(months=1, day=30)最小工作码
import datetime
import dateutil.relativedelta
date = datetime.date.today()
print('today:', date)
for x in range(12):
date += dateutil.relativedelta.relativedelta(months=1, day=30)
print(date)结果:
today: 2022-08-24
2022-09-30
2022-10-30
2022-11-30
2022-12-30
2023-01-30
2023-02-28
2023-03-30
2023-04-30
2023-05-30
2023-06-30
2023-07-30
2023-08-30最后,您应该使用原始日期并添加months=1、months=2等。
date = datetime.date.today().replace(day=30)
for x in range(12):
new_date = date + dateutil.relativedelta.relativedelta(months=x)
print(new_date)https://stackoverflow.com/questions/73468125
复制相似问题