在 Python 中添加 100 年,为什么会出现错误日期?
在 python 中添加 100 年,为什么会出现错误日期?
问题:
在 python 程序中添加 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())
原因:
直接添加 100 * 365 天会忽略闰年。在 100 年内,有 25 个闰年天,这将导致日期错误。
解决方案:
使用 datetime.timedelta():
将 enddate 替换为:
enddate = dateobject + datetime.timedelta(days=100 * 365 + 25)
使用 datetime.replace():
enddate = dateobject.replace(year=dateobject.year + 100)
处理闰年 2 月 29 日:
try: enddate = dateobject.replace(year=dateobject.year + years) except valueerror: # 闰年闰日,将日期移至 2 月 28 日 enddate = dateobject.replace(year=dateobject.year + years, day=28)
示例:
import datetime dateobject = datetime.datetime(1920, 1, 10, 0, 0) enddate = dateobject.replace(year=dateobject.year + 100) print(dateobject.date()) print(enddate.date())
输出:
1920-01-10 2020-01-10
以上就是在 Python 中添加 100 年,为什么会出现错误日期?的详细内容,更多请关注其它相关文章!