2010-10-13 19 views
59

J'ai une liste d'objets datetime, et je veux trouver le plus ancien ou le plus jeune. Certaines de ces dates pourraient être dans le futur.Trouver l'objet datetime le plus ancien/le plus jeune dans une liste

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 
] 

Quelle est la meilleure façon de le faire? Je pensais à comparer datetime.now() à chacun d'entre eux.

+5

Que diriez-vous '' max' et min'? – JoshD

+8

Il n'y avait pas de question similaire sur stackoverflow, j'ai fait une recherche pour une réponse, donc je suis sûr que cela sera utile aux autres. – panosl

Répondre

81

Le plus ancien:

oldest = min(datetimes) 

Plus jeune avant maintenant:

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

Les durées de données sont comparables; vous pouvez donc utiliser max(datetimes_list) et min(datetimes_list)

18

Étant donné une liste de dates dates:

Date Max est max(dates)

La date minimale est min(dates)

4

ont u essayé ceci:

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