2010-10-13 2 views
59

У меня есть список объектов datetime, и я хочу найти самый старый или самый молодой. Некоторые из этих дат могут быть в будущем.Найти самый старый/самый молодой объект datetime в списке

from datetime import datetime 

datetime_list = [ 
    datetime(2009, 10, 12, 10, 10), 
    datetime(2010, 10, 12, 10, 10), 
    datetime(2010, 10, 12, 10, 10), 
    datetime(2011, 10, 12, 10, 10), #future 
    datetime(2012, 10, 12, 10, 10), #future 
] 

Какой оптимальный способ сделать это? Я думал о сравнении datetime.now() с каждым из них.

+5

Как о '' max' и min'? – JoshD

+8

Не было похожего вопроса на stackoverflow, я выполнил поиск для ответа, поэтому я уверен, что он будет полезен другим. – panosl

ответ

81

Старший:

oldest = min(datetimes) 

Youngest до сих пор:

now = datetime.datetime.now(pytz.utc) 
youngest = max(dt for dt in datetimes if dt < now) 
11

Время от времени сопоставимо; так что вы можете использовать max(datetimes_list) и min(datetimes_list)

18

Учитывая список дат dates:

Дата Макс max(dates)

Минимальная дата - min(dates)

4

есть у попытался это:

>>> from datetime import datetime as DT 
>>> l =[] 
>>> l.append(DT(1988,12,12)) 
>>> l.append(DT(1979,12,12)) 
>>> l.append(DT(1979,12,11)) 
>>> l.append(DT(2011,12,11)) 
>>> l.append(DT(2022,12,11)) 
>>> min(l) 
datetime.datetime(1979, 12, 11, 0, 0) 
>>> max(l) 
datetime.datetime(2022, 12, 11, 0, 0)