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

Python datetime计算时间差报错TypeError解决求助

报错原因

你遇到的Type error : an integer is required (got type datetime.datetime)是以下几个问题叠加导致的:

  • 核心触发点:datetime.date()构造函数要求传入3个整数类型参数(分别为年、月、日),你直接把strptime()返回的datetime.datetime类型对象作为参数传入,参数类型完全不匹配,因此抛出类型错误。
  • 字符串处理逻辑错误:str.strip()的作用是移除字符串首尾处属于指定字符集的字符,不是删除指定子串,你用它来剥离T后面的时间部分完全达不到预期,再加上原字符串里的误换行,根本提取不到正确的%y-%m-%d格式日期片段。
  • 其他语法问题:代码中Print首字母大写,Python标准打印函数是小写print(),会触发名称错误;datetime.datetime.strptime被错误拆成两行书写,容易引发解析异常。
修正方法

不需要手动剥离时间字符串的时间部分,datetime.strptime本身支持直接解析带时区、时间的完整时间串,解析完成后调用datetime对象自带的.date()方法就能直接拿到对应日期对象,不需要手动调用datetime.date()构造。
修正后的可运行代码如下:

import datetime

date_time_str = '22-06-24T05:31:06.000+00'
# 直接解析完整的带时间、时区的字符串
date_time_obj = datetime.datetime.strptime(date_time_str, '%y-%m-%dT%H:%M:%S.%f%z')
# 从解析后的datetime对象直接提取日期部分
sub_date = date_time_obj.date()
today_date = datetime.date.today()
time_diff = today_date - sub_date
print(time_diff)

如果你坚持要先手动提取日期片段再解析,不要用strip(),改用split()按'T'分割字符串取第一段即可,解析后同样用.date()取日期对象:

import datetime

date_time_str = '22-06-24T05:31:06.000+00'
# 按T分割取前半段日期部分
date_part = date_time_str.split('T')[0]
date_time_obj = datetime.datetime.strptime(date_part, '%y-%m-%d')
sub_date = date_time_obj.date()
today_date = datetime.date.today()
time_diff = today_date - sub_date
print(time_diff)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:12:33