按python3中的datetime排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按python3中的datetime排序相关的知识,希望对你有一定的参考价值。
寻找有关如何使用下面的时间戳按日期时间对象(如下所示,字典中的值)对python字典进行排序的帮助。
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")
但我不确定如何将其与其他值进行比较,以便正确地和干净地解释日期和时间。
再一次,任何正确方向的推动都将非常感激!
提前谢谢。
答案
日期时间实例支持通常的排序运算符(<
等),因此您应该直接在datetime域中订购,而不是使用字符串。
使用callable将字符串转换为时区感知日期时间实例:
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')]
以上是关于按python3中的datetime排序的主要内容,如果未能解决你的问题,请参考以下文章