日期比较异常:Python中Oct 2022与Feb 2023字符串比较结果错误
问题分析与解决
问题根源:你把解析后的datetime对象又转成了字符串
'10.2022'和'02.2023',字符串比较是逐字符按ASCII码值对比的。'1'的ASCII码比'0'大,所以'10.2022' > '02.2023'会返回True,但这和实际日期的先后逻辑完全不符。正确做法:保留
datetime.datetime对象直接比较,不要转成字符串。修改代码如下:
import datetime # 假设master_list[0][1]是'10-2022',master_list[0][2]是'02-2023' a_date = datetime.datetime.strptime(master_list[0][1], '%m-%Y') b_date = datetime.datetime.strptime(master_list[0][2], '%m-%Y') # 直接比较datetime对象 print(a_date > b_date) # 输出False,符合预期
- 补充说明:如果后续需要按
%m.%Y格式展示日期,可以在比较完成后再调用strftime()转换,不要在比较前转换。比如:
date_format = '%m.%Y' a_display = a_date.strftime(date_format) # 得到'10.2022' b_display = b_date.strftime(date_format) # 得到'02.2023'
内容的提问来源于stack exchange,提问作者naruto1996
相关产品推荐
相关产品推荐

