python处理时间,按照周分割时间段

在实际的开发中,我们经常要设计一些工具类,对于时间来说,有时候需要将其处理成时间段。
例如,对于2024年08月01日2024年08月16日的时间段,我们如何将其处理成时间段[2024-08-01, 2024-08-03], [2024-08-04, 2024-08-10], [2024-08-11, 2024-08-16]。如下表所示:

周日周一周二周三周四周五周六
123
45678910
111213141516

这里,我们采用迭代就可以实现,通过计算每个阶段的开始日期和结束日期,先根据当前阶段开始日期计算当周周日的日期,再判断总的结束日期是否在周日前,如果在,则将第一段时间的结束日期确定为总的结束日期。如果在超出了周日,则将周日定为该阶段的结束日期,以此类推。

这里我们用到几个函数
datetime.datetime.strptime:将字符串转为日期对象
datetime.timedelta: 计算当前日期前推或后推后的日期。
datetime.weekday: 计算当前日期是星期几,其中0代表周末,1代表周一,2代表周二,以此类推。

def split_date_range(start_date_input: str, end_date_input: str) -> list:# 将输入的日期字符串转换为日期对象start_date = datetime.datetime.strptime(start_date_input, '%Y-%m-%d')end_date = datetime.datetime.strptime(end_date_input, '%Y-%m-%d')periods = []current_date = start_datewhile current_date <= end_date:sunday = current_date + datetime.timedelta(days=(6 - current_date.weekday()))if sunday <= end_date:periods.append((current_date.strftime('%Y-%m-%d'), sunday.strftime('%Y-%m-%d')))else:periods.append((current_date.strftime('%Y-%m-%d'), end_date.strftime('%Y-%m-%d')))break# 更新当前日期为周的结束日期的下一天,以便开始下一个周期current_date = sunday + datetime.timedelta(days=1)return periods

这样我们就可以推算每一周的时间阶段了

在这里插入图片描述

如果我们只要工作日的时间阶段呢?应该如何修改这段程序,可以把周期的结束时间调整为周五的日期,也就是周日往前推2天。

周日周一周二周三周四周五周六
12
56789
1213141516

程序如下:

def split_date_range(start_date_input: str, end_date_input: str) -> list:start_date = datetime.datetime.strptime(start_date_input, '%Y-%m-%d')end_date = datetime.datetime.strptime(end_date_input, '%Y-%m-%d')periods = []current_date = start_datewhile current_date <= end_date:sunday = current_date + datetime.timedelta(days=(6 - current_date.weekday()))friday = current_date + datetime.timedelta(days=(6 - 2 - current_date.weekday()))if friday <= end_date:periods.append((current_date.strftime('%Y-%m-%d'), friday.strftime('%Y-%m-%d')))else:periods.append((current_date.strftime('%Y-%m-%d'), end_date.strftime('%Y-%m-%d')))breakcurrent_date = sunday + datetime.timedelta(days=1)return periods

就会自动把周六日的时间去掉,得到的时间就变为了:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/402552.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OSL 冠名赞助Web3峰会 “FORESIGHT2024”圆满收官

OSL 望为香港数字资产市场发展建设添砖加瓦 &#xff08;香港&#xff0c;2024 年 8 月 13 日&#xff09;- 8 月 11 日至 12 日&#xff0c; 由 香港唯一专注数字资产的上市公司 OSL 集团&#xff08;863.HK&#xff09;冠名赞助&#xff0c;Foresight News、 Foresight Ventu…

基于免疫算法的最优物流仓储点选址方案MATLAB仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于免疫算法的最优物流仓储点选址方案MATLAB仿真。 2.测试软件版本以及运行结果展示 MATLAB2022A版本运行 &#xff08;完整程序运行后无水印&#xff09; 3…

pytorch-AutoEncoders

目录 1. 监督学习&无监督学习1.1 监督学习1.2 无监督学习1.3 为什么需要无监督学习 2. AutoEncoders3. Auto Encoders loss function4. PCA VS Auto Encoders5. Auto Encoders的变种5.1 Denoising Auto Encoders5.2 Dropout AutoEncoders5.3 Adversarial AutoEncoders5.4 V…

html 关于table合并外边框以及自动滚动问题汇总

合并外边框 .tab_main{ width: 100%; height:100%; border: 1px solid #ccc; text-align: center; border-spacing: 0; border-collapse: collapse;//合并外边框 } 固定高度显示上下滑动 <div styleoverflow:scroll;height:100%> <di…

hive之greatest和least函数

1、greatest函数&#xff1a; greatest(col_a, col_b, ..., col_n)比较n个column的大小&#xff0c;过滤掉null或对null值进行处理&#xff0c;当某个column中是string&#xff0c;而其他是int/double/float等时&#xff0c;返回null&#xff1b; 举例&#xff1a; select g…

鸿蒙自定义Tab,可居左显示

最近写鸿蒙项目时&#xff0c;需要用到类似Android的TabLayout控件&#xff0c;鸿蒙官方也有提供类似实现的组件Tabs。但是官方Tabs组件&#xff0c;实在有点鸡肋&#xff0c;首先 TabContent和 TabBar是绑定在一起的放在Tabs里面的&#xff0c;如果UI是TabBar的背景是一个整体…

三十七、【人工智能】【机器学习】【监督学习】- AdaNet算法模型

系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…

GPS叉车安全管理系统,远程监控管理车辆,保障叉车资产安全!

叉车的管理和监管一直是一个挑战&#xff0c;九盾叉车监管系统旨在实现对叉车资产的全面监管和管理&#xff0c;结合了GPS车辆定位技术&#xff0c;为您提供了实时、精确的叉车位置信息&#xff0c;从而帮助您更好地管理您的叉车资产。 一、IC卡指纹认证&#xff1a; 确保叉车…

工程数学线性代数(同济大学数学系)第六版(更新中)

第1章 行列式 2 全排列和对换 一、排列及其逆序数 全排列 1个逆序、逆序数 奇排列&#xff0c;偶排列 二、对换 对换&#xff1a;排列中任意两个元素对调 相邻对换&#xff1a;相邻两个元素对换 对换改变排列的奇偶性。 4 行列式的性质 5 行列式按行&#xff08;列&…

【网络】UDP和TCP之间的差别和回显服务器

文章目录 UDP 和 TCP 之间的差别有连接/无连接可靠传输/不可靠传输面向字节流/面向数据报全双工/半双工 UDP/TCP API 的使用UDP APIDatagramSocket构造方法方法 DatagramPacket构造方法方法 回显服务器&#xff08;Echo Server&#xff09;1. 接收请求2. 根据请求计算响应3. 将…

极狐 GitLab 依赖扫描:助力开发者管理软件供应链

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门面向中国程序员和企业提供企业级一体化 DevOps 平台&#xff0c;用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规&#xff0c;而且所有的操作都是在一个平台上进行&#xff0c;省事省心省钱。可以一键安装极狐GitL…

C#使用SharGL实现PUMA560机械臂

1、四轴机械臂 下载链接&#xff1a;https://download.csdn.net/download/panjinliang066333/89645225 关键代码 public void DrawRobot1(ref OpenGL gl,float[] angle,float[] yLength,bool isPuma560_Six){//坐标系说明&#xff1a;//①X轴正向&#xff1a;屏幕朝右//②Y轴…

Vue封装axios请求(超详细)

一、简介 Vue封装axios请求是指将axios库集成到Vue项目中,以便更方便地发送HTTP请求。首先,需要安装axios库,然后在Vue项目中创建一个名为request.js的文件,用于封装axios实例。在这个文件中,可以设置默认的配置,如基础URL、超时时间等。接下来,可以定义一些常用的请求方…

魔方远程时时获取短信内容APP 前端Vue 后端Ruoyi框架(含搭建教程)

前端Vue 后端Ruoyi框架 APP原生JAVA 全兼容至Android14(鸿蒙 澎湃等等) 前后端功能&#xff1a; ①后端可查看用户在线状态(归属地IP) ②发送短信(自定义输入收信号码以及短信内容&#xff0c;带发送记录) ③短信内容分类清晰(接收时间、上传时间等等) ④前后端分离以及A…

攸信动态丨CEIA电子智造论坛:聚焦高可靠性与智能制造,攸信技术受邀参展

第120届CEIA电子智造线下活动-导电高可靠性与智能制造&先进封装与系统集成创新发展论坛于8月8号&#xff0c;在厦门磐基希尔顿酒店召开&#xff0c;本次大会聚焦新型显示、EV汽车电子、智能家电等领域&#xff0c;受到了行业人士的重点关注&#xff0c;超300名行业同仁参会…

【网络】高并发场景处理:线程池和IO多路复用

文章目录 短时间内有大量的客户端的解决方案线程池IO 多路复用 短时间内有大量的客户端的解决方案 创建线程是比较经典的一种服务器开发模型&#xff0c;给每个客户端分配一个线程来提供服务 但一旦短时间内有大量的客户端&#xff0c;并且每个客户端请求都是很快的&#xff…

企业为什么需要安装加密软件

1. 数据保护 防止数据泄露&#xff1a;加密软件通过对敏感数据进行加密处理&#xff0c;确保即使数据在传输或存储过程中被截获&#xff0c;也无法被未授权人员读取或利用&#xff0c;从而有效防止数据泄露。 完整性保护&#xff1a;加密不仅保护数据的机密性&#xff0c;还通…

政务网站(.gov)专用SSL/HTTPS证书

政府网站在选择SSL证书时不仅需要遵循网络安全法规以及密评整改&#xff0c;更要提升公众信任度。国产服务商提供的专业版SSL证书&#xff0c;全方位符合政务部门对SSL证书的要求 1 算法要求 政务服务网站需要落实等保制度、密评制度&#xff0c;在密码应用上可选择国密算法S…

ubuntu-linux ifconfig只有回环IP问题解决

问题如下图所示&#xff1a; 解决方案&#xff1a; sudo dhclient

【Python学习-UI界面】PyQt5 小部件14-QDock 子窗口

可停靠窗口是一个子窗口&#xff0c;可以保持浮动状态或附加到主窗口的指定位置。 QMainWindow类的主窗口对象保留了一块区域供可停靠窗口使用。该区域位于中央窗口部件周围。 可停靠窗口可以在主窗口内移动&#xff0c;也可以被取消停靠并由用户移动到新的区域。 样式如下: …