• 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

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

  • 相关阅读:
    【图像隐藏】基于小波变换DWT实现数字水印嵌入提取含各类攻击附matlab代码
    9.在canvas绘制图片和视频
    C++面试八股文:static和const的关键字有哪些用法?
    flutter 混合开发 module 依赖
    适合弱电行业用的项目管理系统,找企智汇项目管理系统!
    轻松拿下Offer!20个Salesforce管理员&顾问的基础面试问题
    力扣刷题之爬楼梯(7/30)
    【无标题】
    华为云计算HCIE之oceanstor仿真器的使用操作
    数字人IP为何成家电品牌年轻化营销黑马?
  • 原文地址:https://blog.csdn.net/weixin_47872288/article/details/126277063