按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排序的主要内容,如果未能解决你的问题,请参考以下文章

scrapy按顺序启动多个爬虫代码片段(python3)

在Python 3.4中按日期对字典列表进行排序[重复]

Python3将ipa包中的文件按大小排序

MySql 按 Mmm-dd-yyyy 中的(varchar)日期排序

按时间排序 DateTime 列表

按日期对数据进行分组并将DateTime转换为Double