• 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

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

  • 相关阅读:
    Qt 之 QVideoFrame转换为QImage
    Kubernetes教程(一)---使用 kubeadm 创建 k8s 集群(containerd)
    【AAAI 2024】解锁深度表格学习(Deep Tabular Learning)的关键:算术特征交互
    赵章光:只要用心去做,一切都不难
    机器学习(四)机器学习分类及场景应用
    Android init.rc语言全解析
    图像分割项目中损失函数的选择
    MyBatis、MyBatisPlus转义数据库关键字
    141. 环形链表
    Http状态码502常见原因及排错思路(实战)
  • 原文地址:https://blog.csdn.net/weixin_47872288/article/details/126277063