2010-10-13 11 views
59

Ho una lista di oggetti datetime e voglio trovare il più vecchio o il più recente. Alcune di queste date potrebbero essere in futuro.Trova l'oggetto datetime più vecchio/più recente in un elenco

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 
] 

Qual è il modo migliore per farlo? Stavo pensando di confrontare datetime.now() con ognuno di questi.

+5

Come su '' max' e min'? – JoshD

+8

Non c'era nessuna domanda simile su StackOverflow, ho cercato una risposta, quindi sono sicuro che sarà utile per gli altri. – panosl

risposta

81

maggiore:

oldest = min(datetimes) 

più giovane prima d'ora:

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

I tempi di consegna sono paragonabili; in modo da poter utilizzare max(datetimes_list) e min(datetimes_list)

18

Dato un elenco di date dates:

data di Max è max(dates)

La data minima è min(dates)

4

u hanno provato questo:

>>> 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) 
Problemi correlati