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

Python日期比较未返回正确结果,是否遗漏关键细节?

问题根源与解决方案

你的代码核心错误是将日期对象转换成了字符串进行比较,而非直接使用日期类型对象做判断。

字符串的比较规则是按字符的ASCII顺序逐位对比,比如假设今天是10.09.2024,字符串"25.12.2022"和"10.09.2024"比较时,第一个字符'2'的ASCII值大于'1',所以会被判定为"25.12.2022" > "10.09.2024",这和实际的日期先后逻辑完全相悖,导致两个判断都输出not overdue。

修正后的代码

保留date或datetime类型对象进行比较,不要转换为字符串:

import datetime

# 解析字符串为date对象(仅保留日期部分)
date1 = datetime.datetime.strptime("25.12.2022", '%d.%m.%Y').date()
date2 = datetime.datetime.strptime("25.12.2025", '%d.%m.%Y').date()
today = datetime.date.today()

if date1 < today:
    print("OVERDUE")
else: 
    print("not overdue")
    
if date2 < today:
    print("OVERDUE")
else:
    print("not overdue")

说明

datetime.strptime()生成的是datetime对象,调用.date()可以提取纯粹的日期部分,和datetime.date.today()返回的date对象属于同一类型,它们的比较会遵循实际的日期先后逻辑,能正确判断任务是否逾期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:50:32