implementación de Python: intervalo de la fecha imprimir una lista de la fecha dada

prefacio

experiencia de trabajo de bases de datos estadísticas de verificación necesitan estar al final de cada mes, fecha principio, la lista diaria de fechas dentro del intervalo de fechas especificado, o lista actualizada de N días antes de una fecha determinada.

código Python

import datetime
import calendar


# 指定日期间隔内每个月的月初和月尾的日期
def get_time_range_list(startdate, enddate):
    """
    获取指定时间期间内每个月月初和月末日期参数列表
    :param startdate: 起始日期 --> str
    :param enddate: 结束日期 --> str
    :return: date_range_list -->list形如 [('2020-02-01', '2020-02-29'), ... , ('2021-01-01', '2021-01-31')]
    """
    date_range_list = []
    startdate = datetime.datetime.strptime(startdate, '%Y-%m-%d')
    enddate = datetime.datetime.strptime(enddate, '%Y-%m-%d')
    while 1:
        next_month = startdate + datetime.timedelta(days=calendar.monthrange(startdate.year, startdate.month)[1])
        month_end = next_month - datetime.timedelta(days=1)
        if month_end < enddate:
            date_range_list.append((datetime.datetime.strftime(startdate, '%Y-%m-%d'),
                                    datetime.datetime.strftime(month_end, '%Y-%m-%d')))
            startdate = next_month
        else:
            return date_range_list


# 获取指定日期间隔内的日期列表
def create_assist_date(datestart=None, dateend=None):
    """
    获取指定日期间隔内的日期列表
    :param datestart: 开始日期 ---> str
    :param dateend: 结束日期 ---> str
    :return: 日期列表 ['2020-01-25', '2020-01-26', '2020-01-27', '2020-01-28',...]
    """
    if datestart is None:
        datestart = '2019-12-28'
    if dateend is None:
        dateend = datetime.datetime.now().strftime('%Y-%m-%d')

    # 转为日期格式
    datestart = datetime.datetime.strptime(datestart, '%Y-%m-%d')
    dateend = datetime.datetime.strptime(dateend, '%Y-%m-%d')
    date_list = []
    date_list.append(datestart.strftime('%Y-%m-%d'))
    while datestart < dateend:
        # 日期叠加一天
        datestart += datetime.timedelta(days=+1)
        # 日期转字符串存入列表
        date_list.append(datestart.strftime('%Y-%m-%d'))
    return date_list


# 获取今天前N天的日期列表(不包含今天)
def get_nday_list(enddate=None, n=7):
    """
    获取今天前N天的日期列表(不包含今天)
    :param enddate: 截止日期 ---> str
    :param n: 前N天的N值
    :return: ['2020-02-01', '2020-02-02', '2020-02-03', '2020-02-04']
    """
    before_n_days_list = []
    if enddate is None:
        enddate = datetime.date.today()
    else:
        enddate = datetime.datetime.strptime(enddate, '%Y-%m-%d')
        enddate = datetime.date(year=enddate.year, month=enddate.month, day=enddate.day)

    for i in range(1, n + 1)[::-1]:
        before_n_days_list.append(str(enddate - datetime.timedelta(days=i)))
    return before_n_days_list
Publicados 146 artículos originales · ganado elogios 66 · Vistas a 50000 +

Supongo que te gusta

Origin blog.csdn.net/qq_38923792/article/details/104184174
Recomendado
Clasificación