【问题标题】:Find out closest date in a date list django queryset python在日期列表中找出最接近的日期 django queryset python
【发布时间】:2017-12-25 03:42:21
【问题描述】:

我有一个返回这些日期的日期列表 (date_list)。我现在需要找出最接近另一个日期(base_date)的日期。

我正在使用 Python 和 Django 来获取这些数据

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

【问题讨论】:

    标签: python django date datetime django-queryset


    【解决方案1】:

    以下代码应该能够为您提供 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)
    

    【讨论】:

      【解决方案2】:
      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] 是最接近的

      【讨论】:

        猜你喜欢
        • 2020-05-23
        • 1970-01-01
        • 1970-01-01
        • 2014-03-12
        • 1970-01-01
        • 1970-01-01
        • 2018-06-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多