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

Python中如何对包含日期时间的字符串进行正序及倒序排序

排序实现方案

原代码失效原因

你写的strptime格式字符串和实际待解析的字符串结构完全不匹配,会直接抛出ValueError:

  1. 原格式用了-作为分隔符,但实际字符串的日期、时间都是用.分隔
  2. 格式符%b对应英文月份缩写(如Jan、Feb),但你的日期是数字月份
  3. 没有匹配字符串里的time固定字段和后续的时间部分,strptime要求格式串和待解析字符串完全匹配

正确实现代码

首先提前导入datetime模块:

from datetime import datetime

你的原始字符串结构为日.月.年 time 时.分,对应的解析格式串为%d.%m.%y time %H.%M

正序排序(时间从早到晚)

如果需要直接修改原列表:

my_strings.sort(key=lambda s: datetime.strptime(s, "%d.%m.%y time %H.%M"))

如果需要保留原列表,生成新的排序后列表:

asc_sorted_list = sorted(my_strings, key=lambda s: datetime.strptime(s, "%d.%m.%y time %H.%M"))

倒序排序(时间从晚到早)

增加reverse=True参数即可:

# 直接修改原列表
my_strings.sort(key=lambda s: datetime.strptime(s, "%d.%m.%y time %H.%M"), reverse=True)

# 生成新列表
desc_sorted_list = sorted(my_strings, key=lambda s: datetime.strptime(s, "%d.%m.%y time %H.%M"), reverse=True)

排序结果示例

正序排序后的输出如下:

['06.02.20 time 08.51',
 '10.02.20 time 09.24',
 '10.02.20 time 09.24',
 '10.02.20 time 09.25',
 '10.02.20 time 09.26',
 '10.02.20 time 09.27',
 '10.02.20 time 09.28',
 '10.02.20 time 09.29']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:27:03