web-dev-qa-db-fra.com

Rechercher 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 ancien 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 façon la plus optimale de procéder? Je pensais à comparer datetime.now () à chacun d'eux.

74
panosl

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

Étant donné une liste de dates dates:

La date maximale est max(dates)

La date min est min(dates)

23
JoshD

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

12
Gabi Purcaru

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

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

1
Malik A. Rumi