博客
关于我
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合并两张图片 | 先叠透明度再合并 (附Demo)
查看>>
python各进制的表述与转换
查看>>
python各种库安装
查看>>
python可视化matplotlib_如何使用Python中最强大的可视化工具Matplotlib?
查看>>
python可维护性_使用这7大神器,让你的Python 代码更容易于维护
查看>>
python变量的详细教程_Python零基础入门教程之语法入门[变量](第二期)
查看>>
Python变量命名方法-ChatGPT4o作答
查看>>
Python变量与运算符
查看>>
python单元测试之unittest
查看>>
Python单元测试unittest实战
查看>>
python协程实时输出_Python 协程以及事件循环的问题,怎么知道 IO 读取结束了呢?...
查看>>
Python加速运行技巧
查看>>
python办公自动化基础遍历文件夹
查看>>
python办公自动化基础输出文件和文件夹
查看>>
Python制作进度条,原来有这么多方法
查看>>
Python制作简单的学生成绩管理系统
查看>>
python制作甘特图的基本知识(附Demo)
查看>>
python制作一个简单的服务器,【Python】 做一个简单的 http 服务器
查看>>
Python到底能做什么?它的优点在哪?
查看>>
python利用pytorch库导出图像分割算子
查看>>