Python使用datetime计算月初前一天日期是否会生成非法值?
你写的这段代码逻辑完全正确,Python的datetime模块已经内置了合法的日期运算规则,会自动处理跨月、跨年、闰年等边界场景,不会生成不符合公历规范的日期值。
结论
当datetime.date.today()的值为2021-09-01时,计算得到的yesterday等于2021-08-31,不会出现2021-09-00这类非法日期。
你可以手动构造日期做测试验证,测试代码如下:
import datetime # 手动构造指定日期用于测试 test_date = datetime.date(year=2021, month=9, day=1) yesterday = test_date - datetime.timedelta(days=1) print(yesterday)
运行后输出结果为:
2021-08-31
额外补充几个常见边界场景的运算结果,你也可以自行验证:
- 2024-01-01 减1天得到 2023-12-31
- 2024-03-01 减1天得到 2024-02-29(2024为闰年)
- 2023-03-01 减1天得到 2023-02-28
内容的提问来源于stack exchange,提问作者Hater
相关产品推荐
相关产品推荐

