本文主要是介绍使用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方法计算月初,月末,上月初,上月末,下月初,下月末的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!