python 获取日期列表中缺失的日期

获取日期列表中缺失的日期

  最近有个需求,就是有一个时间段的日期格式的字符串列表,其中有缺失的日期,想要写一个脚本来查出缺失的日期,算是个小工具,直接上代码。

import datetime


def get_no_date(date_str_li, start_date='', end_date=''):
    """获取没有列表中没有包含的的日期区间的日期
    args:
        start_date: 查询的起始日期字符串,默认为date_li中最小值
        end_date: 查询的终止日期的字符串, 默认为date_li中最大值
        date_str_li: 所有需要查询的日期的列表
    """
    if not date_str_li:
        raise ValueError('list can\'t empty')
    # 所有文件名称,日期的列表
    try:
        date_li = [datetime.datetime.strptime(date_time, '%Y-%m-%d') for date_time in date_str_li]
    except:
        raise ValueError('your values can\'t  be converted')
    if end_date:
        date_end = datetime.datetime.strptime(end_date, '%Y-%m-%d')
    else:
        date_end = max(date_li)
    if start_date:
        date_start = datetime.datetime.strptime(start_date, '%Y-%m-%d')
    else:
        date_start = min(date_li)
    no_list = []
    while True:
        if date_end not in date_li:
            no_list.append(date_end)
        if date_end == date_start:
            break
        date_end -= datetime.timedelta(1)
    return [datetime.date.strftime(day, '%Y-%m-%d') for day in no_list]

 

posted @ 2018-07-31 20:20  frange  阅读(2033)  评论(0编辑  收藏  举报