博客
关于我
python中获取上一个月一号的方法
阅读量:796 次
发布时间:2023-03-09

本文共 949 字,大约阅读时间需要 3 分钟。

如何快速计算一个月前的第一天

在数据处理领域,生成时间范围内的报表是常见任务。周级别报表通过简单的timedelta(days=7)即可解决,但月级别报表却存在不少挑战。如何准确获取一个月前的第一天,避免跨年或闰年带来的复杂性,这一直是开发者们需要解决的问题。

经过思考,我尝试了两种方法来解决这个问题。

def get_last_month_first_day(date):    date_terminal = 26 + date.day    res_date = date - timedelta(days=date_terminal)    while 1:        if res_date.day == 1:            break        else:            res_date -= timedelta(days=1)    return res_date if name == 'main':test_date_a = date(2016, 9,3)test_date_b = date(2016, 10, 1)test_date_c = date(2016, 2, 28)test_date_d = date(2016, 1, 1)print map(get_last_month_first_day, [test_date_a, test_date_b, test_date_c, test_date_d])

这种方法通过在给定日期的基础上减去一个终止天数(date_terminal),然后逐步向前调整,直到找到一个月的第一天。虽然简单易行,但代码略显冗长,且难以处理闰年等特殊情况。

def get_last_month_first_day_v2(d):    return datetime.date(d.year - (d.month == 1), d.month - 1 if d.month != 1 else 12, 1)

相比之下,这种更简洁的方法通过调整年份和月份,直接计算出目标日期的前一个月的第一天。这种方法逻辑清晰,代码简短,但需要注意月份的边界条件处理。

两种方法各有优劣,选择时可以根据具体需求和项目复杂度来决定。

转载地址:http://etlfk.baihongyu.com/

你可能感兴趣的文章
python下载_安装_配置_以及第一行python程序---python工作笔记009
查看>>
Python不协调机器人消息.内容
查看>>
Python与C#之间内存共享互传信息
查看>>
python与c语言混合编程_你试过C语言和Python一起混合编程吗?两者相加不是已经无敌了!...
查看>>
python与excel
查看>>
Python与Excel的完美邂逅:深入浅出,手把手教你轻松玩转Excel数据操作
查看>>
python与flask_Python编程中flask的简介与简单使用
查看>>
python与图灵机器人交互(WXPY版本)
查看>>
python与运算符_python运算符
查看>>
python两个列表获取交集,并集,差集
查看>>
python两个字典合并,两个list合并
查看>>
Python两个版本共存时,命令行升级pip
查看>>
Python两个版本共存时,怎么验证是否安装成功 scrapy
查看>>
Python两个版本共存时,通过pip安装Scrapy
查看>>
python两组变量的相关关系散点图_变量是什么?变量间的两种关系——函数关系和相关关系(小学版)...
查看>>
Python中 pass语句的作用
查看>>
python中 urllib, urllib2, httplib, httplib2 几个库的区别
查看>>
python中 yaml库 & json库 & xmltodict库使用
查看>>
python中 将你的名字转化成为二进制并输出
查看>>
Python中*args 和**kwargs的用法
查看>>