Mam listę obiektów daty i godziny i chcę znaleźć najstarszy lub najmłodszy. Niektóre z tych dat mogą przypadać w przyszłości.
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
]
Jaki jest najbardziej optymalny sposób, aby to zrobić? Myślałem o porównaniu datetime.now () z każdym z nich.
max
imin
?Odpowiedzi:
Najstarsze:
Najmłodszy wcześniej:
now = datetime.datetime.now(pytz.utc) youngest = max(dt for dt in datetimes if dt < now)
źródło
Oldest before now
)date
wartościami), więc można je naprawdę porównać tylko alfabetycznie. Gdybyś zamiast tego miał tablicę wartościdate
lubdatetime
, zostałyby one poprawnie porównane.Biorąc pod uwagę listę dat
dates
:Maksymalna data to
max(dates)
Minimalna data to
min(dates)
źródło
Czasy danych są porównywalne; więc możesz użyć
max(datetimes_list)
imin(datetimes_list)
źródło
próbowałeś tego:
>>> 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)
źródło
Moduł datetime ma własne wersje min i max jako dostępne metody. https://docs.python.org/2/library/datetime.html
źródło