• Python 通过datetime 获取上周,上月,上年的时间段 附代码


    前言

    书写一个函数爬取整个数据库的文件,主要是通过每周的定时爬取
    为了凸显每周定时爬取,需要获取上周的时间节点

    之前写过类似的时间格式函数:Python关于strftime函数详细解析 附实战代码

    主要的包为:import datetime

    1. 基本函数

    对于datetime获取这些功能函数,需要了解一些基本函数

    函数描述
    datetime.datetime.today()当前时间
    datetime.datetime.now()当前时间
    datetime.datetime.today().weekday()获取当前的星期几

    对应的赋值关系,也会用到下方,注意甄别:

    # 当前时间
    today = datetime.datetime.today()
    now = datetime.datetime.now()
    
    # 当前星期几
    weekday = datetime.datetime.today().weekday()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    截图如下:
    在这里插入图片描述

    2. 函数运用

    对于以下的时间节点,已将公共部分抽离出来(对应的赋值关系在上方)

    获取昨天时间:now() - datetime.timedelta(days=1)
    在这里插入图片描述

    2.1 本周

    获取本周的天数,对应获取其他天数,修改对应数字即可

    • 本周第一天:datetime.datetime.now() - datetime.timedelta(days = datetime.datetime.now().weekday())
    • 本周最后一天:datetime.datetime.now() + datetime.timedelta(days = 6 - datetime.datetime.now().weekday())

    利用上方的赋值关系,其值为:

    # 本周第一天
    now - datetime.timedelta(days = weekday)
    
    # 本周最后一天
    now + datetime.timedelta(days = 6 - weekday)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    截图如下:
    在这里插入图片描述

    2.2 上周

    • 上周第一天:datetime.datetime.now() - datetime.timedelta(days = datetime.datetime.now().weekday() + 7)
    • 上周最后一天:datetime.datetime.now() - datetime.timedelta(days = datetime.datetime.now().weekday() + 1)

    利用上方的赋值关系,其值为:

    # 上周第一天
    now - datetime.timedelta(days = weekday + 7)
    
    # 上周最后一天
    now - datetime.timedelta(days = weekday + 1)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    截图如下:
    在这里插入图片描述

    2.3 本月

    当前月的时间输出默认是年月日时分,所以第一天后面跟着1,对应当前月的第一天0点0分

    • 当前月的第一天:datetime.datetime(datetime.datetime.now().year, datetime.datetime.now().month, 1)
    • 当前月的最后一天:datetime.datetime(datetime.datetime.now().year, datetime.datetime.now().month + 1, 1) - datetime.timedelta(days=1)

    利用上方的赋值关系,其值为:

    # 本月第一天
    datetime.datetime(now.year, now.month, 1)
    
    # 本月最后一天
    datetime.datetime(now.year, now.month + 1, 1) - datetime.timedelta(days=1)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    截图如下:
    在这里插入图片描述

    2.4 上月

    上月的时间节点,可参考当前月份的时间节点思路:

    • 上月的最后一天:datetime.datetime(datetime.datetime.now().year, datetime.datetime.now().month, 1) - datetime.timedelta(days=1)

    上个月的第一天比较复杂(按照刚刚那种写法,显得比较臃肿冗余)
    对此拆分下代码

    利用上方的赋值关系,其值为:

    # 上个月最后一天
    datetime.datetime(now.year, now.month, 1) - datetime.timedelta(days=1)
    
    # 上个月第一天
    datetime.datetime(lastmonth_end.year, lastmonth_end.month, 1)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    截图如下:
    在这里插入图片描述

    2.5 今年

    利用上方的赋值关系,其值为:

    # 今年第一天
    datetime.datetime(now.year, 1, 1)
    
    # 今年最后一天
    end = datetime.datetime(now.year + 1, 1, 1) - datetime.timedelta(days=1)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    截图如下:
    在这里插入图片描述

    2.6 去年

    利用上方赋值关系,其值为:

    # 去年最后一天
    last_year_end = datetime.datetime(now.year, 1, 1) - datetime.timedelta(days=1)
    
    # 去年第一天
    last_year_start = datetime.datetime(last_year_end.year, 1, 1)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    截图如下:
    在这里插入图片描述

  • 相关阅读:
    HQS-C++构造函数
    猿创征文|算法刷题——哈希
    Java—类加载机制
    【LeetCode】不同的子序列 [H](动态规划)
    Redis数据结构之——ziplist
    linux安装Chrome跑web自动化
    【运维日常】运维必备的 免费 在线画图工具,真的很好用!
    编译器优化:何为SLP矢量化
    Visual Studio Code的下载和安装
    stm8L 串口收发数据错误问题
  • 原文地址:https://blog.csdn.net/weixin_47872288/article/details/126277063