使用Python的datetime模块及其timedelta方法计算月初,月末,上月初,上月末,下月初,下月末

本文主要是介绍使用Python的datetime模块及其timedelta方法计算月初,月末,上月初,上月末,下月初,下月末,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Python的datetime模块可以计算月初、月末、上月初、上月末、下月初和下月末的日期, 而日期间的变化是通过timedelta模块完成的


月初

将day参数设置为1就可以

from datetime import datetime, timedelta
today              = datetime.now() # 获取当前日期
year, month 	   = today.year, today.month # 获取当前年和月
first_day_of_month = datetime(year, month, 1) # 创建一个表示当前月份第一天的datetime对象
print(f"月初日期: {first_day_of_month}")

月末

将月份加1,然后设置日为1,再减去一天,这样就得到了当前月的最后一天

next_month		  = month + 1 if month < 12 else 1	# 12月的下一个月是1月
delta_year 		  = year if month < 12 else year + 1	# 12月的下一年要加1
end_of_next_month = datetime(delta_year, next_month, 1) # 将月份加1,设置日为1
last_day_of_month = end_of_next_month - timedelta(days=1) # 然后减去一天得到月末日期
print(f"月末日期: {last_day_of_month}")

这里要注意如果当前月份是12月, 下个月需要变成1月, 并且年份需要+1


上月初

获取当前月份的前一个月份,然后应用月初的计算方法

previous_month 			    = datetime(year, month, 1) - timedelta(days=1) # 获取上一个月
pre_year,pre_month			= previous_month.year,previous_month.month
first_day_of_previous_month = datetime(pre_year,pre_month,1) # 上月初就是上一个月的第一天
print(f"上月初日期: {first_day_of_previous_month}")

上月末

与月末计算方法一致, 当前月的第一天往前推算一天

previous_month = datetime(year, month, 1) - timedelta(days=1) # 上月末就是上一个月的最后一天
print(f"上月末日期: {previous_month}")

下月初

将月份加1

next_month		  		= month + 1 if month < 12 else 1	# 12月的下一个月是1月
delta_year 		  		= year if month < 12 else year + 1	# 12月的下一年要加1
first_day_of_next_month = datetime(delta_year, next_month, 1) # 将月份加1,设置日为1
print(f"下月初日期: {first_day_of_next_month}")

下月末

下下月初往前推算1天

# 获取下下个月的第一天
if month == 11:next_next_month = 1delta_year		= year + 1
elif month == 12:next_next_month = 2delta_year  	= year + 1
else:next_next_month = month + 2delta_year		= yearfirst_day_of_next_next_month = datetime(delta_year, next_next_month, 1)
last_day_of_next_month 		 = first_day_of_next_next_month - timedelta(days=1) # 下月末就是下下个月的第一天减去一天
print(f"下月末日期: {last_day_of_next_month}")

总结

  • 计算月初就是提取初对应的年月, 然后将day参数设置为1
  • 计算月末就是用下个月末往前减1天

请添加图片描述

这篇关于使用Python的datetime模块及其timedelta方法计算月初,月末,上月初,上月末,下月初,下月末的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/853168

相关文章

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

prometheus如何使用pushgateway监控网路丢包

《prometheus如何使用pushgateway监控网路丢包》:本文主要介绍prometheus如何使用pushgateway监控网路丢包问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录监控网路丢包脚本数据图表总结监控网路丢包脚本[root@gtcq-gt-monitor-prome

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

Java 方法重载Overload常见误区及注意事项

《Java方法重载Overload常见误区及注意事项》Java方法重载允许同一类中同名方法通过参数类型、数量、顺序差异实现功能扩展,提升代码灵活性,核心条件为参数列表不同,不涉及返回类型、访问修饰符... 目录Java 方法重载(Overload)详解一、方法重载的核心条件二、构成方法重载的具体情况三、不构