Экземпляры Datetime поддерживают обычные операторы упорядочения (<
и т. Д.), Поэтому заказывать следует в домене datetime напрямую, а не со строками.
Используйте вызываемый для преобразования ваших строк в с учетом часового пояса экземпляры datetime:
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')]