寻找有关如何使用下面的时间戳对datetime对象(如下所示,字典中的值)对python3 dictonary进行排序的帮助。
datetime: "2018-05-08T14:06:54-04:00"
任何帮助都会受到赞赏,花了一点时间在这上面并知道创建我能做的对象:
format = "%Y-%m-%dT%H:%M:%S"
# Make strptime obj from string minus the crap at the end
strpTime = datetime.datetime.strptime(ts[:-6], format)
# Create string of the pieces I want from obj
convertedTime = strpTime.strftime("%B %d %Y, %-I:%m %p")
但我不确定如何将其与其他值进行比较,以便正确地,干净地解释日期和时间。
再次,非常感谢正确方向的任何推动!
提前致谢。
答案 0 :(得分:3)
Datetime实例支持通常的排序运算符(<
等),因此您应该直接在datetime域中订购,而不是使用字符串。
使用callable将字符串转换为 timezone-aware 日期时间实例:
from datetime import datetime
def key(s):
fmt = "%Y-%m-%dT%H:%M:%S%z"
s = ''.join(s.rsplit(':', 1)) # remove colon from offset
return datetime.strptime(s, fmt)
此键功能可用于正确排序值:
>>> data = {'s1': "2018-05-08T14:06:54-04:00", 's2': "2018-05-08T14:05:54-04:00"}
>>> sorted(data.values(), key=key)
['2018-05-08T14:05:54-04:00', '2018-05-08T14:06:54-04:00']
>>> sorted(data.items(), key=lambda item: key(item[1]))
[('s2', '2018-05-08T14:05:54-04:00'), ('s1', '2018-05-08T14:06:54-04:00')]