You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中实现类似Bash的指定日期加天数功能?

解决Python日期加法的类型错误问题

嘿,我一眼就看出你代码里的问题啦——你直接把用户输入的字符串和timedelta对象相加了,这在Python里是行不通的!input()返回的是字符串类型,而datetime.timedelta只能和datetime.date或datetime.datetime这类日期对象做运算,直接相加会抛出TypeError。

修正步骤拆解

  1. 把输入字符串转成日期对象:用datetime.datetime.strptime()方法,根据你提示的mm/dd/yy格式,指定解析格式为%m/%d/%y。
  2. 执行日期加法:用转换后的日期对象和timedelta相加,得到新的日期。
  3. 格式化输出(可选):如果需要和你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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:10:43