如何在Python中实现类似Bash的指定日期加天数功能?
解决Python日期加法的类型错误问题
嘿,我一眼就看出你代码里的问题啦——你直接把用户输入的字符串和timedelta对象相加了,这在Python里是行不通的!input()返回的是字符串类型,而datetime.timedelta只能和datetime.date或datetime.datetime这类日期对象做运算,直接相加会抛出TypeError。
修正步骤拆解
- 把输入字符串转成日期对象:用
datetime.datetime.strptime()方法,根据你提示的mm/dd/yy格式,指定解析格式为%m/%d/%y。 - 执行日期加法:用转换后的日期对象和
timedelta相加,得到新的日期。 - 格式化输出(可选):如果需要和你Bash脚本里一样的输出格式(比如
Wed Sep 11 2024),用strftime("%a %b %d %Y")来格式化结果。
修正后的完整代码
import datetime print("Last billing run date mm/dd/yy") # 获取用户输入并去除首尾空格 date_input = input().strip() # 尝试解析输入的日期字符串,加入错误处理避免格式错误崩溃 try: # 按照mm/dd/yy格式解析为datetime对象 original_date = datetime.datetime.strptime(date_input, "%m/%d/%y") except ValueError: print("Error: 请输入正确的mm/dd/yy格式日期,例如 09/15/24") exit() # 定义要添加的天数 delta_27 = datetime.timedelta(days=27) delta_45 = datetime.timedelta(days=45) # 计算新日期 new_date_27 = original_date + delta_27 new_date_45 = original_date + delta_45 # 输出和Bash脚本格式一致的结果 print("添加27天后的日期:", new_date_27.strftime("%a %b %d %Y")) print("添加45天后的日期:", new_date_45.strftime("%a %b %d %Y"))
额外说明
- 加入了
try-except块来处理用户输入错误格式的情况,让程序更健壮。 - 如果只需要日期(不需要时间),也可以用
datetime.date.strptime(),后续操作逻辑是一样的。
内容的提问来源于stack exchange,提问作者Amidues
相关产品推荐
相关产品推荐

