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()

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

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)

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

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)

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

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)

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

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)

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

2.5 今年

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

# 今年第一天
datetime.datetime(now.year, 1, 1)

# 今年最后一天
end = datetime.datetime(now.year + 1, 1, 1) - datetime.timedelta(days=1)

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

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)

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


版权声明:本文为weixin_47872288原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。