web-dev-qa-db-ja.com

リスト内で最も古い/最も新しい日付時刻オブジェクトを見つける

日時オブジェクトのリストがあり、最も古いものまたは最も若いものを見つけたい。これらの日付の一部は将来になる可能性があります。

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
]

そのための最適な方法は何ですか? datetime.now()とそれらのそれぞれを比較することを考えていました。

74
panosl

最も古い:

oldest = min(datetimes)

今までで最年少:

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

日付のリストdates

最大日付はmax(dates)です

最小日付はmin(dates)です

23
JoshD

日時は同等です。 max(datetimes_list)min(datetimes_list)を使用できます

12
Gabi Purcaru

これを試しましたか:

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

日時モジュールには、使用可能なメソッドとしてminとmaxの独自のバージョンがあります。 https://docs.python.org/2/library/datetime.html

1
Malik A. Rumi