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

yizhihongxing

要获取指定时间段内特定规律的日期列表,可以使用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生成每日报表数据(Excel)并邮件发送的实例

    我来为你详细讲解如何用Python生成每日报表数据(Excel)并邮件发送的实例教程。 1. 安装必要的库 首先,我们需要安装两个Python库:pandas和openpyxl。 pandas 用于将数据整理为需要生成的报表格式。 openpyxl 用于将生成的报表保存为Excel格式,并且生成Excel的图表。 可以使用 pip 工具进行安装,打开命令行窗…

    python 2023年5月13日
    00
  • python教程之利用pyautogui图形自动化击败重复性办公任务

    接下来我将为您详细讲解“Python教程之利用PyAutoGUI图形自动化击败重复性办公任务”的完整攻略。 1. 概述 PyAutoGUI是一个Python第三方库,用于通过鼠标和键盘模拟实现GUI操作。利用PyAutoGUI可以高效地进行重复性办公任务的自动化操作。本文将介绍如何使用PyAutoGUI来实现图形自动化击败重复性办公任务。 2. 安装 在执行…

    python 2023年5月19日
    00
  • Python如何实现动态数组

    下面是关于Python如何实现动态数组的完整攻略,包含两个示例说明。 动态数组的定义 动态数组是一种可以自动扩容的,可以根据需要动态地增加或减少数组的大小。在Python中,我们可以使用列表类型来实现动态数组。 列表的特点 在Python中,列表类型有以下几个特: 列表中的元素是有序的,可以通过索引访问。 列表中的元素是可变的,可以添加、删除、等操作。 列表…

    python 2023年5月13日
    00
  • 如何将一个CSV格式的文件分割成两个CSV文件

    以下是将CSV文件分割成两个CSV文件的攻略。 准备工作 要将CSV文件分割成两个CSV文件,你需要确保你的电脑上有Python环境。如果你没有安装Python,请先安装Python,然后继续阅读本文档。 第一步:读取CSV数据 我们首先需要读取原始的CSV数据。这可以通过Python的csv模块来完成。代码示例: import csv with open(…

    python 2023年6月3日
    00
  • 教你学会使用Python正则表达式

    教你学会使用Python正则表达式 正则表达式是一种用于描述字符串模式的语言,可以用于匹配、查找、替换和割字符串。Python中的re模块供了正则表达式支持,方便进行字符串的处理。本文详细讲解Python中正则表达式的使用方法,包括正表达式语法、re模块的常用函数以及两个用配实例。 正则表达式语法 正则表达式由些特殊字符和普通字符组成,用于字符串模式匹。下面…

    python 2023年5月14日
    00
  • 简单讲解Python编程中namedtuple类的用法

    当我们需要定义一些复杂的数据类型时,可以使用Python中的namedtuple类。namedtuple是一个Python标准库集合模块中的数据类型,它是一个高性能的tuple子类,它允许定义带有命名字段的元组,元组内的每个元素都可以通过名称和索引访问。 下面是namedtuple类用法的详细说明: 什么是namedtuple namedtuple是Pyth…

    python 2023年5月14日
    00
  • Python实用工具FuckIt.py介绍

    Python实用工具FuckIt.py介绍 简介 FuckIt.py 是一个Python实用工具,用于解决由于Python代码出错而导致的运行异常或崩溃。它试图解释Python代码,除去错误部分,并将修改后的代码(尽可能使其仍然与原代码保持相似)输出到控制台或文件中。因为解释在运行时进行,因此解释器无法检测到代码被修改的情况,但这个过程确实对于定位问题和调试…

    python 2023年5月19日
    00
  • Python实现数据清洗的示例详解

    Python实现数据清洗的示例详解 数据清洗是数据分析中必不可少的一环,Python作为一门流行的数据分析语言,提供了许多数据清洗的工具和库,比如pandas等。本文将介绍如何使用Python进行数据清洗,并结合示例进行详细讲解。 准备数据 首先我们需要准备一些需要清洗的数据,这里我们以一个包含错误数据的csv文件为例。 假设我们有一个students.cs…

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