Python 学习笔记:根据输入年月获取该月的第一天和最后一天
目的:
给定一个时间,比如:2020.02,要求返回所输入月份的第一天及最后一天,比如:('2020.02.01', '2020.02.29')
参考博客:https://blog.csdn.net/gou_can/article/details/88052875
思路:
已知年月,每月的第一天当然是1号啦,所以接下来只要能求得输入月份的最后一天即可,这里我们可以利用 Python 的 calendar 模块下的 monthrange 函数来实现。
首先可以看下以下代码:
import calendar
calendar.monthrange(2019,5)
输出结果:(2, 31)
解析:
这里使用了函数 calendar.monthrange(year,month),该函数返回两个整数:
第一个整数是该月首日所在的星期的日期码(0-6);
第二个整数是该月的天数(28-31);
上面输入的时间是:2019年5月;得到的结果是:(2, 31),即,5月1号是星期三(日期码为2),这个月有31天,可以从日历验证这一结果;而且,每月的天数也是每个月最后一天的日期,根据这一特点,我们可以利用这一函数来获取每个月的最后一天,OK,问题解决。

代码实现:
根据上面的思路,定义以下函数:
import calendar
def get_current_month_start_and_end(date):
if str(date).count('.') != 1:
raise ValueError("Pls input parameter such as '2019.05'") #要求参数格式是:xxxx.xx,可自行设定,此处省去其他验证
year,month = str(date).split('.')[0], str(date).split('.')[1] #分割字符串,提取年月
end = calendar.monthrange(int(year), int(month))[1] #获取当前年月的当月天数
start_date = '%s.%s.01' %(year,month) #第一天
end_date = '%s.%s.%s' %(year,month,end) #最后一天
return start_date,end_date
自定义函数调用结果如下:

Python 学习笔记:根据输入年月获取该月的第一天和最后一天的更多相关文章
- JAVA获取前一个月的第一天和最后一天
package com.date; import java.text.SimpleDateFormat; import java.util.Calendar; /** * 默认显示前一个月的第一天和最 ...
- [Python学习笔记-003] 使用PyOTP获取基于OTOP算法的动态口令
建立安全的VPN连接,不仅需要输入用户名和密码,还需要输入动态口令(token).作为一个懒人,我更喜欢什么手工输入都不需要,既不需要输入password,也不需要输入token.也就是说,只需一个命 ...
- Python学习笔记6-异常捕获取
#--encoding:utf-8-- try: float('abc') except Exception,e: print e try: float(1.2) except Exception,e ...
- Python学习笔记(Django篇)——3、创建第一个数据库模型
Django里面集成了SQLite的数据库,对于初期研究来说,可以用这个学习. 第一步,创建数据库就涉及到建表等一系列的工作,在此之前,要先在cmd执行一个命令: python manage.py ...
- C# 获取某月的第一天和最后一天
/// <summary> /// 取得某月的第一天 /// </summary> /// <param name=" ...
- DateTime获取一个月的第一天和最后一天
DateTime dtTarget = DateTime.Now; DateTime FirstDay = dtTarget.AddDays(-DateTime.Now.Day + ); DateTi ...
- java获取本月或某月的第一天和最后一天
获取某月的第一天和最后一天的日期 Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Ca ...
- python 学习笔记 12 -- 写一个脚本获取城市天气信息
近期在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么可以显示后最重要的就是显示什么的问题了. 最easy想到的就是显示时间啊,CPU利用率啊.IP地址之类的.那么我认为呢,假设可以显示当 ...
- 20180821 Python学习笔记:如何获取当前程序路径
20180821 Python学习笔记:如何获取当前程序路径 启动的脚本的路径为:D:\WORK\gitbase\ShenzhenHouseInfoCrawler\main.py 当前脚本的路径为:D ...
随机推荐
- HTML元素 和 CSS (9.23 第十天)
HTML元素分类:块级元素和内联元素块级元素:标签元素会以新行开始或结束<h1><p><table>等内联元素:显示数据不会以新行开始<a><im ...
- 算法5:队列——解密 QQ 号
新学期开始了,小哈是小哼的新同桌(小哈是个小美女哦~),小哼向小哈询问 QQ 号,小哈当然不会直接告诉小哼啦,原因嘛你懂的.所以小哈给了小哼一串加密过的数字,同时小哈也告诉了小哼解密规则.规则是这样的 ...
- Python Learning Day7
破解极验滑动验证 博客园登录url: https://account.cnblogs.com/signin?returnUrl=https%3A%2F%2Fwww.cnblogs.com%2F 代码逻 ...
- POJ-3629 模拟
A - Card Stacking Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u S ...
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring AOP(面向切面编程)
面向切面编程(AOP)和面向对象编程(OOP)类似,也是一种编程模式.Spring AOP 是基于 AOP 编程模式的一个框架,它的使用有效减少了系统间的重复代码,达到了模块间的松耦合目的. AOP ...
- MyBatis:一对多、多对一处理
多对一的处理 多对一的理解: 多个学生对应一个老师 如果对于学生这边,就是一个多对一的现象,即从学生这边关联一个老师! 数据库设计 CREATE TABLE `teacher` ( `id` INT( ...
- CCCC 红色警报
题意: 战争中保持各个城市间的连通性非常重要.本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报.注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个 ...
- STM32速度---网页讲解
1. ① USART串口,若最大波特率只需115.2k,那用2M的速度就够了,既省电也噪声小. ② I2C接口,若使用400k波特率,若想把余量留大些,可以选用10M的GPIO引脚速度. ③ SPI接 ...
- Java编程知识点梳理
1. elementAt() temp.elementAt(0) 返回temp这个vector里面存放的第一个元素--->也是一个vector类型. 2. 字符串空格分割 String [] ...
- CTF -bugku-web-web基础 矛盾
---恢复内容开始--- 以GET方式获取参数 is_numeric()函数是判断是否为数字或者数字字符串 所以不能是数字或者数字字符串,但是下面$num == 1 有要求为数字1 所以构造1+任意字 ...