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

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

 [[335095]]

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

 

Excel完成这个需求

① 在单元格中输入EOMONTH()公式

 

② 完成填充操作

 

③ 将时间戳转换为短日期格式

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

 

Python完成这个需求

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

1)datetime库中的知识点

 

  1. import datetime 
  2.  
  3. date1 = datetime.date.today() 
  4. print(date1) 
  5.  
  6. year = datetime.date.today().year 
  7. print(year)` 
  8.  
  9. month = datetime.date.today().month 
  10. print(month

结果如下:

 

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

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

 

  1. date1 = datetime.date(year=yearmonth=monthday=1) 
  2. print(date1) 
  3.  
  4. date2 = datetime.date(year=yearmonth=monthday=2) 
  5. print(date2) 

结果如下:

 

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

2)calendar库中的知识点

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

  • monthrange(year, month):返回指定年月,由第一天所在的星期和本月的总天数组成的元组。

 

  1. # 这里的yearmonth就是上面提到的2020和7 
  2. import calendar 
  3.  
  4. x, y = calendar.monthrange(yearmonth
  5. print(x, y) 
  6. ""
  7. 其中:x表示2020/7/1号所在的星期数,其中周一是0,周二是1,周三是2。 
  8.      y表示的是2020年7月这个月的总天数。 
  9. ""

结果如下:

 

3)完整代码如下

 

  1. def func(year=None, month=None): 
  2.     if year
  3.         year = int(year
  4.     else
  5.         year = datetime.date.today().year 
  6.  
  7.     if month
  8.         month = int(month
  9.     else
  10.         month = datetime.date.today().month 
  11.  
  12.     # x:表示当月第一天所属的星期 
  13.     # y:表示当月的总天数 
  14.     x, y = calendar.monthrange(yearmonth
  15.  
  16.     # 获取当月的第一天和最后一天 
  17.     first_day = datetime.date(year=yearmonth=monthday=1) 
  18.     last_day = datetime.date(year=yearmonth=monthday=y) 
  19.  
  20.     return first_day, last_day 
  21.  
  22. first_day, last_day = func() 
  23. print(first_day, last_day) 
  24.  
  25. first_day, last_day = func(2020,6) 
  26. print(first_day, last_day) 

结果如下:

 


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

 

责任编辑:华轩 来源: 数据分析与统计学之美
相关推荐

2018-06-20 09:35:43

码农科技开发

2021-05-05 09:46:49

WiFi路由器网络

2019-04-28 09:56:15

程序员互联网脱发

2010-09-14 16:18:00

SQL Server日

2020-02-13 10:54:29

源码模式Mybatis

2021-02-03 21:15:44

Ansible系统运维系统管理员

2021-05-10 09:57:40

Windows10操作系统微软

2013-01-08 13:32:31

SEO GTD

2012-05-16 11:47:40

Gmail邮件

2016-10-17 18:28:03

2022-04-11 11:38:44

Python代码游戏

2019-11-07 15:30:00

EmacsIDE

2022-01-09 17:35:06

引擎规则数据

2015-10-29 11:36:45

Google技术经理程序员

2012-08-10 22:44:52

ArchSummit

2021-05-11 09:52:13

AI 数据人工智能

2017-03-21 21:17:50

大数据数据互联网

2010-04-13 16:09:43

2013-08-15 13:27:00

Windows 8.1

2021-07-15 09:49:08

B站宕机黑客
点赞
收藏

51CTO技术栈公众号