2010-10-13 14 views
59

Tôi đã có danh sách đối tượng ngày giờ và tôi muốn tìm đối tượng cũ nhất hoặc nhỏ nhất. Một số trong những ngày này có thể là trong tương lai.Tìm đối tượng datetime cũ nhất/trẻ nhất trong danh sách

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 
] 

Cách tối ưu nhất để làm như vậy là gì? Tôi đã suy nghĩ của việc so sánh datetime.now() cho mỗi một trong số đó.

+5

Làm thế nào về 'max' và' min'? – JoshD

+8

Không có bất kỳ câu hỏi tương tự nào trên stackoverflow, tôi đã tìm kiếm thông qua một câu trả lời, vì vậy tôi chắc chắn nó sẽ hữu ích cho người khác. – panosl

Trả lời

81

lớn nhất:

oldest = min(datetimes) 

nhỏ nhất từ ​​trước đến giờ:

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

Thời gian biểu có thể so sánh được; vì vậy bạn có thể sử dụng max(datetimes_list)min(datetimes_list)

18

Cho một danh sách các ngày dates:

ngày Max là max(dates)

Ngày tối thiểu là min(dates)

4

có u cố gắng này:

>>> 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) 
Các vấn đề liên quan