将datetime转换为字符串和格式

时间:2014-07-04 14:36:49

标签: python string sorting datetime format

我有以下列表包含日期(但没有格式化为日期时间,只有字符串):

MyList = ['25/4/2014', '2/12/2014', '15/7/2014']

我想从最早的日期到最晚的日期对此列表进行排序。 我把以下代码放在一起:

MyList = ['25/4/2014', '2/12/2014', '15/7/2014']
MyList2 = []
for i in MyList:
    MyList2.append(datetime.strptime(i, "%d/%m/%Y"))
SortedList = sorted(MyList2)

Result = []
for n in SortedList:
    m = n.strftime('%d/%m/%Y')
    Result.append(m)
print Result

列表已排序,但问题是格式略有不同:     ['25 / 04/2014','15/07 / 2014','02/12 / 2014']

注意日期和月份中的额外“0”。

有没有办法让结果列表具有原始格式,例如4月份将是“4”而不是“04”?

非常感谢!

1 个答案:

答案 0 :(得分:4)

key使用sorted()功能;这将解析日期仅用于排序,保持原始值不变:

SortedList = sorted(MyList, key=lambda d: datetime.strptime(d, "%d/%m/%Y"))

然后,列表将根据key函数的返回值而不是值本身进行排序。在内部,Python 修饰值(生成(key(v), None, v)的元组,None确保v不参与破坏关系),对这些进行排序,然后取消再次装饰。

演示:

>>> from datetime import datetime
>>> MyList = ['25/4/2014', '2/12/2014', '15/7/2014']
>>> sorted(MyList, key=lambda d: datetime.strptime(d, "%d/%m/%Y"))
['25/4/2014', '15/7/2014', '2/12/2014']