在 python 中添加 100 年,为什么会出现错误日期?
问题:
在 python 程序中添加 100 年时,为什么显示了不正确的日期?
代码示例:
立即学习“Python免费学习笔记(深入)”;
import datetimestringdate = "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 datetimedateobject = datetime.datetime(1920, 1, 10, 0, 0)enddate = dateobject.replace(year=dateobject.year + 100)print(dateobject.date())print(enddate.date())
登录后复制
输出:
1920-01-102020-01-10
登录后复制
以上就是在 Python 中添加 100 年,为什么会出现错误日期?的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2183143.html