首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用“相对论性”(months=1)将日期时间值递增一个月而不影响数值日值?

如何使用“相对论性”(months=1)将日期时间值递增一个月而不影响数值日值?
EN

Stack Overflow用户
提问于 2022-08-24 06:02:50
回答 1查看 34关注 0票数 -1

在这里输入图像描述,我上面写的代码工作得很好,但我希望这个月的数值日(%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将是列表中预期的最后一项。那么,我如何才能使用“相对论性”函数只增加一个月而不影响一天呢?

EN

回答 1

Stack Overflow用户

发布于 2022-08-24 09:22:03

相对人塔的文档还显示了设置日期的day= (不要使用添加天数的days= )

代码语言:javascript
复制
   .relativedelta(months=1, day=30)

最小工作码

代码语言:javascript
复制
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)

结果:

代码语言:javascript
复制
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=1months=2等。

代码语言:javascript
复制
date = datetime.date.today().replace(day=30)

for x in range(12):
    new_date = date + dateutil.relativedelta.relativedelta(months=x)
    print(new_date)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73468125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档