按python3中的datetime排序

问题描述 投票:1回答:1

寻找有关如何使用下面的时间戳按日期时间对象(如下所示,字典中的值)对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")

但我不确定如何将其与其他值进行比较,以便正确地和干净地解释日期和时间。

再一次,任何正确方向的推动都将非常感激!

提前谢谢。

python-3.x sorting datetime dictionary
1个回答
3
投票

日期时间实例支持通常的排序运算符(<等),因此您应该直接在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')]
© www.soinside.com 2019 - 2024. All rights reserved.