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

Python中用户输入YYYYMMDD格式日期相减触发TypeError问题

解决日期相减的TypeError问题

嘿,我来帮你搞定这个TypeError问题!你的代码里有两个关键错误导致了这个问题,咱们一步步梳理清楚:

错误原因分析

  • datetime.date()用法完全错误:这个构造函数的要求是传入三个整数参数(年、月、日),比如datetime.date(2024, 1, 1),而不是直接丢给它日期字符串和格式字符串。你原来的datetime.date(startDate, "%Y-%m-%d")写法完全不符合它的调用规则,这就是触发TypeError的核心原因。
  • 格式字符串不匹配输入要求:你明确要求用户用YYYYMMDD格式输入日期,但代码里却用了带横杠的%Y-%m-%d格式,就算解析方法对了,也会因为格式不匹配直接报错。

修正后的代码

import sys
import datetime

# 获取命令行传入的日期参数
start_date_str = sys.argv[1]
end_date_str = sys.argv[2]

# 解析YYYYMMDD格式的字符串为date对象
d1 = datetime.datetime.strptime(start_date_str, "%Y%m%d").date()
d2 = datetime.datetime.strptime(end_date_str, "%Y%m%d").date()

# 打印日期并计算差值
print(f"起始日期: {d1}")
print(f"结束日期: {d2}")
date_diff = d2 - d1
print(f"两个日期相差 {date_diff.days} 天")

代码说明

  1. 用strptime解析字符串:datetime.datetime.strptime()是专门用来将字符串按指定格式解析为日期对象的方法,第一个参数是输入的日期字符串,第二个是对应的格式符(%Y%m%d正好匹配你要求的YYYYMMDD格式)。
  2. 转换为date对象:调用.date()方法把解析得到的datetime对象转成纯date对象,这样后续的日期相减操作会返回timedelta对象,方便直接提取相差天数。
  3. 日期相减逻辑:两个date对象直接相减就能得到时间差,通过.days属性可以轻松获取相差的天数。

运行示例

在命令行里这样执行你的脚本:

python your_script.py 20240101 20240115

内容的提问来源于stack exchange,提问作者cb101

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 19:33:05