码迷,mamicode.com
首页 > 编程语言 > 详细

python中获取上一个月一号的方法

时间:2016-10-10 07:39:25      阅读:479      评论:0      收藏:0      [点我收藏+]

标签:

业务场景:

我们经常会跑一些月级别或者周级别的报表。

周级别的报表还比较好确定,就是七天前的直接用timedelta(days=7)来获取开始日期就可以了;

但是月级别的报表就要麻烦一些,因为timedelta这个函数没有month这个参数,那我们怎么来获取一个月前的一号呢,还要考虑到这个月有多少天,会不会跨年,之类的...

我今天想到了一个简单的办法,分享给大家

有了这个办法,就不用再去判断闰年那些很麻烦的逻辑了

如果大家发现这个算法有什么问题可以指出来,共同学习

 

 1 from datetime import date
 2 from datetime import timedelta
 3 
 4 def get_last_month_first_day(date):
 5     date_terminal = 26 + date.day
 6     res_date = date - timedelta(days=date_terminal)
 7     while 1:
 8         if res_date.day == 1:
 9             break
10         else:
11             res_date -= timedelta(days=1)
12     return res_date
13 
14 
15 if __name__ == __main__:
16     test_date_a = date(2016, 9,3)
17     test_date_b = date(2016, 10, 1)
18     test_date_c = date(2016, 2, 28)
19     test_date_d = date(2016, 1, 1)
20     print map(get_last_month_first_day, [
21         test_date_a, test_date_b, test_date_c, test_date_d])

 

python中获取上一个月一号的方法

标签:

原文地址:http://www.cnblogs.com/symons1992/p/5944445.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!