119 votes

Trouver l'objet datetime le plus ancien/le plus jeune dans une liste

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

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'eux.

164voto

eumiro Points 56644

Le plus ancien :

oldest = min(datetimes)

Le plus jeune avant maintenant :

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

36voto

JoshD Points 7303

Donné une liste de dates dates :

La date maximale est max(dates)

La date minimale est min(dates)

19voto

Gabi Purcaru Points 15158

Les dates sont comparables ; vous pouvez donc utiliser max(datetimes_list) et min(datetimes_list)

8voto

jknair Points 1708

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

1voto

Malik A. Rumi Points 639

Le module datetime a ses propres versions de min et max comme méthodes disponibles. https://docs.python.org/2/library/datetime.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X