python获取指定时间段内特定规律的日期列表

要获取指定时间段内特定规律的日期列表,可以使用Python标准库中的datetime和calendar模块。

首先,需要import datetime和calendar模块:

import datetime
import calendar

然后,定义一个函数date_generation(start_date, end_date, rule)来生成指定时间段内特定规律的日期列表。

参数start_date和end_date分别表示时间段的起始日期和终止日期,格式为YYYY-MM-DD;

参数rule表示日期的规律,可以是以下值之一:

  • "daily":按天生成日期列表;
  • "weekly":按周生成日期列表,规律为每周的星期几;
  • "monthly":按月生成日期列表,规律为每月的几号。

针对不同的规律,我们分别处理。

  1. 按天生成日期列表
def date_generation(start_date, end_date, rule):
    result = []
    start = datetime.datetime.strptime(start_date, "%Y-%m-%d")
    end = datetime.datetime.strptime(end_date, "%Y-%m-%d")
    delta = datetime.timedelta(days=1)
    while start <= end:
        result.append(start.strftime("%Y-%m-%d"))
        start += delta
    return result

在函数中,我们首先将传入的起始时间和结束时间按照"%Y-%m-%d"的格式转换为datetime类型,然后定义一个datetime.timedelta对象delta,表示日期间隔为1天。我们使用while循环,从起始日期开始,以天为单位逐个增加日期到结束日期,并把生成的日期添加到result列表中。最后返回result列表。

示例1:按天生成2021-07-01到2021-07-05的日期列表

date_list = date_generation("2021-07-01", "2021-07-05", "daily")
print(date_list)

输出:

['2021-07-01', '2021-07-02', '2021-07-03', '2021-07-04', '2021-07-05']
  1. 按周生成日期列表
def date_generation(start_date, end_date, rule):
    result = []
    start = datetime.datetime.strptime(start_date, "%Y-%m-%d")
    end = datetime.datetime.strptime(end_date, "%Y-%m-%d")
    weekday = int(rule[-1])    # 获取规律中的星期几
    while start <= end:
        d = start.weekday()
        if d == weekday:    # 如果当前日期是指定的星期几
            result.append(start.strftime("%Y-%m-%d"))
        start += datetime.timedelta(days=1)
    return result

在函数中,我们首先将传入的起始时间和结束时间按照"%Y-%m-%d"的格式转换为datetime类型,然后从规律中解析出要生成的星期几。同样使用while循环,从起始日期开始,以天为单位逐个增加日期到结束日期,并判断当前日期是否是指定的星期几,如果是则把生成的日期添加到result列表中。最后返回result列表。

示例2:按周生成2021-07-01到2021-07-31每周五的日期列表

date_list = date_generation("2021-07-01", "2021-07-31", "weekly5")
print(date_list)

输出:

['2021-07-02', '2021-07-09', '2021-07-16', '2021-07-23', '2021-07-30']
  1. 按月生成日期列表
def date_generation(start_date, end_date, rule):
    result = []
    year, month = tuple(map(int, start_date.split("-")[:2]))    # 获取起始时间的年份和月份
    last_day = calendar.monthrange(year, month)[-1]    # 获取起始月份的天数
    if rule.isdigit():    # 如果规律是数字,按规律的日期生成
        day = int(rule)
    elif rule == "last":    # 如果规律是"last",按月份的最后一天生成
        day = last_day
    else:
        return result
    while True:
        month_dates = [datetime.date(year, month, day) for day in range(1, last_day+1)]
        result += [d.strftime("%Y-%m-%d") for d in month_dates if str(d) >= start_date and str(d) <= end_date]
        if str(month_dates[-1]) == end_date:    # 如果当前月份的最后一天是结束日期,则结束循环
            break
        month += 1    # 处理下一个月份
        if month > 12:    # 处理下一年
            year += 1
            month = 1
        last_day = calendar.monthrange(year, month)[-1]    # 获取下一个月份的天数
    return result

在函数中,我们首先获取起始时间的年份和月份,并计算起始月份的天数。根据传入的规律,生成当前月份的日期列表,并筛选出起始时间到结束时间之间的日期。如果当前月份的最后一天是结束日期,则结束循环;否则处理下一个月份。最后返回result列表。

示例3:按月生成2021-07-01到2021-10-31每月最后一天的日期列表

date_list = date_generation("2021-07-01", "2021-10-31", "last")
print(date_list)

输出:

['2021-07-31', '2021-08-31', '2021-09-30', '2021-10-31']

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python获取指定时间段内特定规律的日期列表 - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • Python Beautiful Soup模块使用教程详解

    Python Beautiful Soup模块使用教程详解 Beautiful Soup是一个Python库,用于解析HTML和XML文档,并提供了一些方便的方法来获取和操作文档中的元素。它可以帮助我们快速地从网页中提取所需的信息,是Python爬虫中常用的工具之一。 安装Beautiful Soup 在使用Beautiful Soup之前,需要确保已安装该…

    python 2023年5月15日
    00
  • Python机器学习之决策树算法

    下面是关于“Python机器学习之决策树算法”的完整攻略。 1. 决策树算法的基本原理 决策树算法是一种基于树形结构的分类算法,它通过对数据集进行递归分割,生成一棵树形结构,用于对新数据进行分类。决策树算法的基本流程如下: 选择最优特征:根据某种评估指标,选择最优的特征作为当前节点的分裂特征。 分裂节点:根据分裂特征的取值,将当前节点分裂成多个子节点。 递归…

    python 2023年5月13日
    00
  • python异常处理try except过程解析

    下面是关于Python异常处理的完整攻略: 1. 异常处理概述 Python 中的异常处理,主要是利用 try…except 块来处理,即在可能出现异常的代码块中尝试运行异常代码,如果出现异常,则执行相应的处理代码,例如打印异常信息或执行特定的操作,而不是直接抛出异常。 在 Python 中,所有的异常都是从基类 BaseException 继承而来的,…

    python 2023年5月13日
    00
  • 解决python和pycharm安装gmpy2 出现ERROR的问题

    解决Python和PyCharm安装gmpy2出现ERROR的问题 在使用Python和PyCharm安装gmpy2时,有时会出现ERROR的问题,导致无法正常使用该模块。本文将详细讲解解决Python和PyCharm安装gmpy2出现ERROR的问题的完整攻略,包括安装依赖库使用wheel文件安装等方法。 安装依赖库 在安装gmpy2之前,需要先安装一些赖…

    python 2023年5月13日
    00
  • 如何在Python中使用psycopg2库连接PostgreSQL数据库?

    在Python中,我们可以使用psycopg2库连接PostgreSQL数据库。psycopg2是一个Python PostgreSQL适配器,它允许我们在Python中连接、操作和管理PostgreSQL数据库。以下是如何在Python中使用psycopg2库连接PostgreSQL数据库的完整使用攻略,包括连接数据库、创建表、插入数据、查询数据、更新数据…

    python 2023年5月12日
    00
  • 利用Python第三方库xlrd读取Excel中数据实例代码

    下面是关于如何使用Python第三方库xlrd读取Excel中数据的实例教程。 1. 安装xlrd库 首先,我们需要安装xlrd库,使用以下命令进行安装: pip install xlrd 2. 读取Excel文件 我们假设有一个Excel文件example.xlsx,其中一个sheetSheet1中包含以下数据: Name Age Gender Tom 2…

    python 2023年5月13日
    00
  • APPium+Python编写真机移动端自动化脚本的项目实践

    下面我将详细讲解“APPium+Python编写真机移动端自动化脚本的项目实践”的完整攻略。 一、项目背景 在移动互联网时代,移动端自动化测试已成为软件测试的一个重要环节。而APPium+Python是目前最受欢迎的移动端自动化测试组合。本项目主要是利用APPium和Python编程语言,编写真机移动端自动化脚本,来检验移动应用的稳定性、兼容性和性能等方面的…

    python 2023年5月23日
    00
  • python网络编程之数据传输UDP实例分析

    Python网络编程之数据传输UDP实例分析 1. 什么是UDP UDP(User Datagram Protocol,用户数据报协议)是一种无连接的网络传输协议,它不保证数据传输的可靠性和顺序性。UDP以数据报的形式在网络上发送数据,不需要通过建立连接来传输数据,可以发送任何大小的数据报,并且可以将一个UDP数据报发送给多个主机。 由于UDP没有建立连接,…

    python 2023年6月6日
    00
合作推广
合作推广
分享本页
返回顶部