如果我想在我的程序中添加 100 年,为什么它显示错误的日期?
import datetime
stringDate= "January 10, 1920"
dateObject= datetime.datetime.strptime(stringDate, "%B %d, %Y")
endDate= dateObject+datetime.timedelta(days=100*365)
print dateObject.date()
print endDate.date()
原文由 ismail khan 发布,翻译遵循 CC BY-SA 4.0 许可协议
您不能只添加 100 * 365 天,因为在该时间跨度中有 366 天的闰年。在你的 100 年跨度中,你错过了 25 天。
最好在这里使用
datetime.replace()
方法:对于闰年的 2 月 29 日,这仍然会失败,因为根据您添加的年数,您最终会得到一个无效日期。在这种情况下,您可以回到 2 月 28 日,或者使用 3 月 31 日;处理抛出的异常并切换到您选择的替代品:
演示: