很多时候我们做当月数据统计都会用到这个时间,但是CSDN我查了,还真没有,所以我就写一篇正好应该能变成唯一搜索。期望能有更多的价值。
Python获取上个月最后一天的日期
本文测试时间2月14日,需要计算本月所有发布的文章数目。
我们需要遍历所有的文章列表,但是我们需要去截取时间,这个时间不能是当月的1号,因为当月1号也有文章发布,故而我们应该去获取上个月最后一天的日期,并且需要根据格式来输出字符串,一般写法有2种格式(符号自己换,有的时候是【/】有的时候是【-】还有可能是【年月日】)。
返回格式1
这里两个符号我都处理并输出了,根据自己的需求拿取就行。
import datetime from datetime import timedelta now = datetime.datetime.now() str_index = str(datetime.datetime(now.year, now.month, 1) - timedelta(days=1))[:10] print(str_index) str_index = str(datetime.datetime(now.year, now.month, 1) - timedelta(days=1))[:10].replace("-", "/") print(str_index)
输出效果:
返回格式2
这里是长类型的,有时分秒那种。
import datetime from datetime import timedelta now = datetime.datetime.now() str_index = str(datetime.datetime(now.year, now.month, 1) - timedelta(days=1)) print(str_index) str_index = str(datetime.datetime(now.year, now.month, 1) - timedelta(days=1)).replace("-", "/") print(str_index)
效果如下:
最直接的获取本月第一天
有的时候我们还需要获取本月第一天,我在平台上找到了一个示例,但是比较麻烦,我们先来看看啊。
示例Demo:
from datetime import datetime from datetime import timedelta import calendar def getLastDayOfLastMonth(): d = datetime.now() c = calendar.Calendar() year = d.year month = d.month if month == 1: month = 12 year -= 1 else: month -= 1 days = calendar.monthrange(year, month)[1] return (datetime(year, month, 1) + timedelta(days=days)).strftime('%Y-%m-%d %X') print(getLastDayOfLastMonth())
输出时间:
这个是没有任何问题的,就是代码太长了,我们处理一下。
最有效的示例:
看着代码是不是少了很多很多呢。
import datetime now = datetime.datetime.now() str_index = str(datetime.datetime(now.year, now.month, 1)) print(str_index) str_index = str(datetime.datetime(now.year, now.month, 1)).replace("-", "/") print(str_index)
输出效果如下。
总结
月份的第一天,最后一天都是有很多用途的,我们在以后具体的开发过程中需要创建一个专门格式化时间的类来帮助我们获取各种格式的时间。