使用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 = 1
	delta_year		= year + 1
elif month == 12:
	next_next_month = 2
	delta_year  	= year + 1
else:
	next_next_month = month + 2
	delta_year		= year
	
first_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天

请添加图片描述

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python中,datetime.timedelta是一个表示时间差的对象。可以使用两个date或datetime对象相减来得到一个timedelta对象。timedelta对象可以用于在日期和时间上进行加减操作。 例如,可以使用timedelta来表示一段时间的差异,比如几小时前、几天前等。可以通过指定小时、分钟、秒等参数来创建timedelta对象,并将其与datetime对象相加或相减。 以下是一些使用timedelta的示例代码: ```python import datetime now = datetime.datetime.now() t = now - datetime.timedelta(hours=3) print(t) # 3小时前的时间 t2 = now - datetime.timedelta(hours=3, minutes=30) print(t2) # 3小时30分钟前的时间 t3 = now - datetime.timedelta(hours=3, seconds=30) print(t3) # 3小时30秒前的时间 t4 = now - datetime.timedelta(hours=3, seconds=30, days=3) print(t4) # 3天3小时30秒前的时间 t5 = datetime.timedelta(hours=3, seconds=22).total_seconds() print(t5) # 得到总秒数,类型是float型 ``` 另外,timedelta还可以与datetime对象配合使用进行时间的加减操作。可以通过指定天数、小时、分钟、秒等参数来创建timedelta对象,并将其与datetime对象相加或相减。 以下是一个使用timedeltadatetime对象进行时间加减的示例代码: ```python from datetime import datetime, timedelta dt = datetime(2012, 12, 12, 23, 59, 59) dt1 = dt + timedelta(days=-1) # 昨天 dt2 = dt + timedelta(days=1) # 明天 dt3 = dt + timedelta(hours=-1) # 上一个小时 dt4 = dt + timedelta(hours=1) # 下一个小时 dt5 = dt + timedelta(seconds=-1) # 上一秒 dt6 = dt + timedelta(seconds=1) # 下一秒 ``` 总结来说,datetime.timedelta是一个用于表示时间差的对象,可以用于在日期和时间上进行加减操作。它可以与date类的对象或datetime类的对象结合使用,但不能单独与time类的对象结合使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

但老师

要是看起来爽 求打赏一耳光

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值