问题描述
我正在使用Datetime生成一个随机日期列表,并且需要显示为dd / mm / yy(例如3月24日为20/03/20)。我可以使用strftime对其进行排序,但是它会从左到右破坏排序,因此需要花费一天的时间并按该顺序排序。
获取日期时间对象,转换为用于格式化的字符串,然后将该字符串转换回日期时间对象以进行排序,似乎有点过头。
如何正确排序此列表中的日期?
先谢谢您!
import random
from datetime import datetime,timedelta
user_test_date = datetime.strptime("12/12/21",'%d/%m/%y')
ledger = []
''' Create date for transaction '''
def date_gen():
date_step = random.randrange(1,60) # Set range of 2 months
raw_date = user_test_date + timedelta(days =- date_step) # Alter days value each loop
date = raw_date.strftime('%w %b %y') #Change format of date
ledger.append(date)
ledger.sort(key=lambda item: item[0],reverse=True) #Sort list of dates
for i in range(10):
date_gen()
print(ledger)
解决方法
此处:
date = raw_date.strftime('%w %b %y') #Change format of date
您将datetime对象转换为str。尝试跳过此行,并将date_gen
中的最后一行替换为ledger.sort()