2017-07-19 2 views
0

J'ai une liste de dates (date_list) qui retourne ces dates. J'ai maintenant besoin de savoir quelle date est la plus proche d'une autre date (base_date).Trouver la date la plus proche dans une liste de dates django queryset python

J'utilise Python et Django pour obtenir ces données

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

Répondre

0

Ci-dessous le code devrait être en mesure de vous fournir le résultat attendu pour 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] est le plus proche