python获取指定间隔日期列表

1.获取指定年份月份之间的间隔日期列表

import datetime
from calendar import Calendar


def get_year_dates(year: int, date_format: str = '%Y%m%d', start_month=1, end_month=12):
    """
    获取指定年份月份的所有日期
    :param year: int
    :param date_format:
    :param start_month: 默认开始月份从1月份开始,即返回当年所有日期
    :return: -> list[str]  某年从开始月份第一天起到年底的所有日期
    """
    date_list = []
    c = Calendar(year)
    for i in range(start_month, end_month + 1):
        for week in c.monthdatescalendar(year, i):
            for date in week:
                if date.year == year and start_month <= date.month <= end_month:
                    date = date.strftime(date_format)
                    if date not in date_list:
                        date_list.append(date)
    get_logger().info('get_year_dates, year=%s, start_month=%s, end_month=%s, date_list=%s' % (year, start_month, end_month, date_list))
    return date_list

2.获取指定起止时间之间的间隔日期列表

import datetime
def get_date_list(start_date, end_date, format):
    """
    根据开始日期、结束日期返回这段时间里所有天的集合
    :param start_date: 开始日期(日期格式或者字符串格式)
    :param end_date: 结束日期(日期格式或者字符串格式)
    :param format: 格式化字符串, 如: '%Y-%m-%d'
    :return:
    """
    date_list = []
    if isinstance(start_date, str) and isinstance(end_date, str):
        start_date = datetime.datetime.strptime(start_date, '%Y-%m-%d')
        end_date = datetime.datetime.strptime(end_date, '%Y-%m-%d')
    date_list.append(start_date.strftime(format))
    while start_date < end_date:
        start_date += datetime.timedelta(days=1)
        date_list.append(start_date.strftime(format))
    return date_list
posted @ 2021-08-07 20:07  Οo白麒麟оΟ  阅读(339)  评论(0编辑  收藏  举报