目的:

给定一个时间,比如: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 学习笔记:根据输入年月获取该月的第一天和最后一天的更多相关文章

  1. JAVA获取前一个月的第一天和最后一天

    package com.date; import java.text.SimpleDateFormat; import java.util.Calendar; /** * 默认显示前一个月的第一天和最 ...

  2. [Python学习笔记-003] 使用PyOTP获取基于OTOP算法的动态口令

    建立安全的VPN连接,不仅需要输入用户名和密码,还需要输入动态口令(token).作为一个懒人,我更喜欢什么手工输入都不需要,既不需要输入password,也不需要输入token.也就是说,只需一个命 ...

  3. Python学习笔记6-异常捕获取

    #--encoding:utf-8-- try: float('abc') except Exception,e: print e try: float(1.2) except Exception,e ...

  4. Python学习笔记(Django篇)——3、创建第一个数据库模型

    Django里面集成了SQLite的数据库,对于初期研究来说,可以用这个学习.   第一步,创建数据库就涉及到建表等一系列的工作,在此之前,要先在cmd执行一个命令: python manage.py ...

  5. C# 获取某月的第一天和最后一天

    /// <summary>        /// 取得某月的第一天        /// </summary>        /// <param name=" ...

  6. DateTime获取一个月的第一天和最后一天

    DateTime dtTarget = DateTime.Now; DateTime FirstDay = dtTarget.AddDays(-DateTime.Now.Day + ); DateTi ...

  7. java获取本月或某月的第一天和最后一天

    获取某月的第一天和最后一天的日期 Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Ca ...

  8. python 学习笔记 12 -- 写一个脚本获取城市天气信息

    近期在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么可以显示后最重要的就是显示什么的问题了. 最easy想到的就是显示时间啊,CPU利用率啊.IP地址之类的.那么我认为呢,假设可以显示当 ...

  9. 20180821 Python学习笔记:如何获取当前程序路径

    20180821 Python学习笔记:如何获取当前程序路径 启动的脚本的路径为:D:\WORK\gitbase\ShenzhenHouseInfoCrawler\main.py 当前脚本的路径为:D ...

随机推荐

  1. 屏幕适配 - JS - 网站布局元素

    网页可见区域宽:document.body.clientWidth; 网页可见区域高:document.body.clientHeight; 网页可见区域高:document.body.offsetW ...

  2. 在MFC做DLL动态链接库时,使用boost,出现断言错误

    建立的MFC DLL工程中有使用boost::thread,就会发生compile正常但是一程式执行或者直接编辑就出現ASSERT错误. 错误位置:dllinit.cpp,Line: 587,ASSE ...

  3. Python Learning Day6

    selenium操作 点击.清除操作 from selenium import webdriver from selenium.webdriver.common.keys import Keys im ...

  4. 简单看看LongAccumulator

    上篇博客我们看了AtomicLong和LongAdder的由来,但是有的时候我们想一下,LongAdder这个类也有点局限性,因为只能是每一次都+1,那有没有办法每次+2呢?或者每次乘以2?说得更抽象 ...

  5. 用Python读取一个文本文件并统计词频

    刚刚在写文章时360浏览器崩溃了,结果内容还是找回来了,感谢博客园的自动保存功能!!! ------------恢复内容开始------------ 最近在学习Python,自己写了一个小程序,可以从 ...

  6. python数据拼接: pd.concat

    1.concat concat函数是在pandas底下的方法,可以将数据根据不同的轴作简单的融合 pd.concat(objs, axis=0, join='outer', join_axes=Non ...

  7. Q6:ZigZag Conversion

    6. ZigZag Conversion 官方的链接:6. ZigZag Conversion Description : The string "PAYPALISHIRING"  ...

  8. ZOJ-1234 UVA-10271 DP

    最近觉得动态规划真的很练脑子,对建模以及思维方法有很大帮助,线段树被卡到有点起不来的感觉 最近仔细思考了一下动态规划的思想,无非是由局部最优解得到全局最优解,由此类推,发现,像最短路和最小生成树其实都 ...

  9. java后台开发细节记录

    1.  ResultMap是程序员控制SQL查询结果和实体类的映射关系,而不是sql语句中字段的重命名,所以在sql语句中还是要按照原来字段的格式进行书写.

  10. ICRA 2019最佳论文公布 李飞飞组的研究《Making Sense of Vision and Touch: Self-Supervised Learning of Multimodal Representations for Contact-Rich Tasks》获得了最佳论文

    机器人领域顶级会议 ICRA 2019 正在加拿大蒙特利尔举行(当地时间 5 月 20 日-24 日),刚刚大会公布了最佳论文奖项,来自斯坦福大学李飞飞组的研究<Making Sense of ...