2010-10-13 9 views
59

Tengo una lista de objetos datetime, y quiero encontrar la más antigua o la más joven. Algunas de estas fechas pueden ser en el futuro.Encuentra el objeto datetime más antiguo/más joven en una lista

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 
] 

¿Cuál es la forma más óptima de hacerlo? Estaba pensando en comparar datetime.now() con cada uno de esos.

+5

¿Qué hay de '' max' y min'? – JoshD

+8

No había ninguna pregunta similar en stackoverflow, busqué una respuesta, así que estoy seguro de que será útil para otros. – panosl

Respuesta

81

mayor:

oldest = min(datetimes) 

más joven hasta ahora:

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

Los horarios son comparables; para que pueda utilizar max(datetimes_list) y min(datetimes_list)

18

Dada una lista de fechas dates:

fecha de Max es max(dates)

La fecha mínima es min(dates)

4

tienen u probamos este:

>>> 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) 
Cuestiones relacionadas