根据日期和时间对 python 中的字符串进行排序

Sort strings in python based on date and time

我有一个这种格式的字符串列表:

my_strings = [
"10.02.20 time 09.24",  
"06.02.20 time 08.51",  
"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"   
]

如何根据日期和时间对它们进行正向和反向排序?我想我应该使用类似的东西:

my_strings.sort(key=lambda date: datetime.strptime(date, "%d-%b-%y"))

但这行不通。

假设你的格式是“day.month.year时间hour.minute”,你需要:

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

如果“正常和反向”是指按升序和降序排列,对于后者,您可以使用 my_strings[::-1] 反转排序列表,或者直接使用 my_strings.sort(key=..., reverse=True) 排序。

根据 strptime function 的文档,函数的正确调用是:

strptime(date, "%d.%m.%y time %H.%M")

您在代码中输入的 %b 是“月份作为语言环境的缩写名称(Jan、Feb、...、Dec)”,但正确的 %m 是“月份作为零-填充的十进制数”,并且您还需要在声明其格式的字符串中包含 time %H.%M,否则您将得到 ValueError: time data '10.02.20 time 09.24' does not match format '%d.%b.%y'

你导入datetime模块的语句可能是import datetime,试试from datetime import datetime。 全是代码

from datetime import datetime

my_strings = [
    "10.02.20 time 09.24",
    "06.02.20 time 08.51",
    "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"
]
my_strings.sort(key=lambda date: datetime.strptime(date, "%y.%m.%d time %H.%M"))
print(my_strings)