calender获取本月最后一天的日期_对比Excel,怎么用Python获取指定月最后一天的日期...

这是群友的一个需求。他想根据一个给定的日期,获取该给定日期在这个年月的最后一天的日期,并且要求在Python中怎么做。基于此,我就想到了对比Excel,在Python中完成这个需求。

a6be375473e974ae52851fa2f3882dc6.png

Excel完成这个需求

① 在单元格中输入EOMONTH()公式
174e524ed0a7c847e6e83f85d7eef083.png
② 完成填充操作
eea457427655939a250ca3696374736d.png
③ 将时间戳转换为短日期格式

可以看到在excel中输入该公式后,默认返回的是一个时间戳,我们需要将其转换为我我们需要的短日期格式。

7200b824e18346bbb8574f5f87939a23.png

Python完成这个需求

在完成这个需求之前,我们先来讲述几个知识点,否则你会看着懵逼。

1)datetime库中的知识点
import datetime
date1 = datetime.date.today()
print(date1)
year = datetime.date.today().year
print(year)`
month = datetime.date.today().month
print(month)

结果如下:

21e143ea75972ec163dfa5ea370d7d1f.png

可以看出:上面我们使用today()函数直接获取了当前系统的年月,并且利用year和month属性分别获取了当前系统时间的年、月。

接下来,我们使用该模块获取指定年、月的指定日期,其中day=1表示获取当前年月的第一天,day=2表示获取当前年月的第二天......依次进行下去。

date1 = datetime.date(year=year, month=month, day=1)
print(date1)
date2 = datetime.date(year=year, month=month, day=2)
print(date2)

结果如下:

2e700512fbad38e54f580748e95d2f70.png

通过上述演示,应该可以知道怎么完成这个需求了吧?当我们指定了年月,后面只需要传入day=当月的总天数这个参数,得到的不就是该年月的最后一天的日期吗?因此目前的问题就是怎么获取某个月的最后一天,这就是下面需要讲述的monthrange()函数。

2)calendar库中的知识点

对于这个模块,我主要讲述一个monthrange()函数,这个函数是有什么用呢?

  • monthrange(year, month):返回指定年月,由第一天所在的星期和本月的总天数组成的元组。
# 这里的year和month就是上面提到的2020和7import calendar
x, y = calendar.monthrange(year, month)
print(x, y)"""
其中:x表示2020/7/1号所在的星期数,其中周一是0,周二是1,周三是2。
     y表示的是2020年7月这个月的总天数。
"""

结果如下:79e81647de18726ec6653ab5bd71b54f.png

3)完整代码如下
def func(year=None, month=None):if year:
        year = int(year)else:
        year = datetime.date.today().yearif month:
        month = int(month)else:
        month = datetime.date.today().month# x:表示当月第一天所属的星期# y:表示当月的总天数
    x, y = calendar.monthrange(year, month)# 获取当月的第一天和最后一天
    first_day = datetime.date(year=year, month=month, day=1)
    last_day = datetime.date(year=year, month=month, day=y)return first_day, last_day
first_day, last_day = func()
print(first_day, last_day)
first_day, last_day = func(2020,6)
print(first_day, last_day)

结果如下:387e7a8f4578f4b285b6cd979b4dea27.png这个代码其实很好理解:如果year和month为空,就返回的是当前系统时间的最后一天的日期。如果传入指定年月,那么获取的就是指定年月的最后一天的日期。

3db311d4876190ecbdd061dd01a441e2.png

关注微信公众号『数据分析与统计学之美』,后台回复"入群" 拉你进群哦,气氛很好滴呀!93d13e7cae7b0d3133676ff763cd26eb.png

喜欢本文点个在看

d2bee2d9fc8ab3e95919ae5aca39040c.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值