2017-07-19 4 views
0

Ich habe eine Datumsliste (date_list), die diese Daten zurückgibt. Ich muss nun herausfinden, welches Datum einem anderen Datum am nächsten kommt (base_date).Finde das nächste Datum in einer Datumsliste django queryset python

Ich bin mit Python und Django auf diese Daten erhalten

date_list = [datetime.date(2017, 6, 18), datetime.date(2018, 2, 4), datetime.date(2018, 2, 11), datetime.date(2018, 4, 23), datetime.date(2018, 6, 17)] 

base_date = [datetime.date(2016, 4, 7)] 

Antwort

0

Im Folgenden Code sollte es möglich sein, um die zu erwartende Ergebnis für Python 3.

import datetime 
date_list = [datetime.date(2017, 6, 18), datetime.date(2018, 2, 4), datetime.date(2018, 2, 11), datetime.date(2018, 4, 23), datetime.date(2018, 6, 17)] 
base_date = [datetime.date(2016, 4, 7)] 

closest_date = '' 
lowest_time_delta = 99999999 

for my_date in date_list: 
    current_time_delta = abs((my_date - base_date[0]).total_seconds()) 
    if current_time_delta < lowest_time_delta: 
     closest_date = my_date 
     lowest_time_delta = current_time_delta 

print (closest_date) 
0
import datetime                              
date_list = [datetime.date(2018, 2, 4),                        
      datetime.date(2018, 2, 11),                        
      datetime.date(2018, 4, 23),                        
      datetime.date(2017, 6, 18),                        
      datetime.date(2018, 6, 17)]                        

base_date = datetime.date(2016, 4, 7)                        

min_delta = min([abs(base_date - one) for one in date_list])                   

closest_index = delta_list.index(min_delta) 

Date_List [closest_index] ist der nächste