【Python】根据开始时间、结束时间计算中间时间

需求

实现一个函数,两个参数开始时间、结束时间,如果没给就是当前时间往前推30天,计算这俩时间之间的所有日期,组成列表;

实现

python 复制代码
from datetime import datetime, timedelta

def get_date_list(start_date=None, end_date=None):
    # 如果未提供结束时间,默认为当前时间
    if end_date is None:
        end_date = datetime.now()
    else:
        # 如果提供了结束时间,确保是datetime类型
        if isinstance(end_date, str):
            end_date = datetime.strptime(end_date, '%Y-%m-%d')
    
    # 如果未提供开始时间,默认为结束时间往前推30天
    if start_date is None:
        start_date = end_date - timedelta(days=30)
    else:
        # 如果提供了开始时间,确保是datetime类型
        if isinstance(start_date, str):
            start_date = datetime.strptime(start_date, '%Y-%m-%d')
    
    # 确保开始时间不晚于结束时间
    if start_date > end_date:
        raise ValueError("开始时间不能晚于结束时间")
    
    # 生成日期列表
    date_list = []
    current_date = start_date
    while current_date <= end_date:
        date_list.append(current_date.strftime('%Y-%m-%d'))
        current_date += timedelta(days=1)
    
    return date_list

# 示例用法
if __name__ == "__main__":
    # 不提供参数,使用默认值(当前时间往前推30天到当前时间)
    print(get_date_list())

    # 提供开始时间和结束时间
    print(get_date_list("2025-01-01", "2025-01-10"))

    # 只提供开始时间
    print(get_date_list("2025-09-01"))

    # 只提供结束时间
    print(get_date_list(end_date="2025-01-10"))

验证

python 复制代码
['2025-08-06', '2025-08-07', '2025-08-08', '2025-08-09', '2025-08-10', '2025-08-11', '2025-08-12', '2025-08-13', '2025-08-14', '2025-08-15', '2025-08-16', '2025-08-17', '2025-08-18', '2025-08-19', '2025-08-20', '2025-08-21', '2025-08-22', '2025-08-23', '2025-08-24', '2025-08-25', '2025-08-26', '2025-08-27', '2025-08-28', '2025-08-29', '2025-08-30', '2025-08-31', '2025-09-01', '2025-09-02', '2025-09-03', '2025-09-04', '2025-09-05']
['2025-01-01', '2025-01-02', '2025-01-03', '2025-01-04', '2025-01-05', '2025-01-06', '2025-01-07', '2025-01-08', '2025-01-09', '2025-01-10']
['2025-09-01', '2025-09-02', '2025-09-03', '2025-09-04', '2025-09-05']
['2024-12-11', '2024-12-12', '2024-12-13', '2024-12-14', '2024-12-15', '2024-12-16', '2024-12-17', '2024-12-18', '2024-12-19', '2024-12-20', '2024-12-21', '2024-12-22', '2024-12-23', '2024-12-24', '2024-12-25', '2024-12-26', '2024-12-27', '2024-12-28', '2024-12-29', '2024-12-30', '2024-12-31', '2025-01-01', '2025-01-02', '2025-01-03', '2025-01-04', '2025-01-05', '2025-01-06', '2025-01-07', '2025-01-08', '2025-01-09', '2025-01-10']
相关推荐
froginwe114 分钟前
Python3与MySQL的连接:使用mysql-connector
开发语言
喵手7 分钟前
Python爬虫实战:公共自行车站点智能采集系统 - 从零构建生产级爬虫的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集公共自行车站点·公共自行车站点智能采集系统·采集公共自行车站点导出csv
喵手15 分钟前
Python爬虫实战:地图 POI + 行政区反查实战 - 商圈热力数据准备完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·地区poi·行政区反查·商圈热力数据采集
熊猫_豆豆20 分钟前
YOLOP车道检测
人工智能·python·算法
nimadan1221 分钟前
**热门短剧小说扫榜工具2025推荐,精准捕捉爆款趋势与流量
人工智能·python
杜子不疼.24 分钟前
PyPTO:面向NPU的高效并行张量编程范式
开发语言
lly20240625 分钟前
C# 结构体(Struct)
开发语言
默默前行的虫虫26 分钟前
MQTT.fx实际操作
python
YMWM_36 分钟前
python3继承使用
开发语言·python
JMchen12337 分钟前
AI编程与软件工程的学科融合:构建新一代智能驱动开发方法学
驱动开发·python·软件工程·ai编程