2015-10-26 171 views
2

我需要根据给定的yearmonth值获取一个月的第一天和最后一天。我能够得到的第一天,我们如何得到这个月的最后一天在这里(在python):从python的年份月份获取月份的最后一天

from datetime import date 
def first_day_of_month(year,month): 
    return date(year, month, 1) 

print "Today: %s" % date.today() 
print ("First day of this month: %s" % 
first_day_of_month(2015,10)) 

这使输出: 今天:2015年10月26日 的第一天月:2015-10-01

如何获取月份的最后一天? P.s:我不想给31作为date()函数的第三个参数。我想计算一个月中的天数,然后将其传递给该函数。

+1

那么你有什么试过,究竟是什么问题呢?例如,为什么不从下个月的开始减去一天? – jonrsharpe

+0

我尝试了日历方法来获得月份范围,这种方式我可以做到这一点,但我想使用日期函数,因为我用了第一天。下面方法@Busturdust建议的方法是我在找的 –

回答

7

使用calendar.monthrange

from calendar import monthrange 
monthrange(2011, 2) 
(1, 28) 
# Just to be clear, monthrange supports leap years as well: 

from calendar import monthrange 
monthrange(2012, 2) 
(2, 29) 

“返回了平日一年(0-6〜周一至周日)和(28-31)的天数,月”。

+5

您可能想要解释'monthrange'的返回值:“返回一年的平日(0-6〜周一至周日)和天数(28-31)月。” (所以OP会希望'month_end = monthrange(year,month)[1]')。你的'datetime'解决方案需要额外的逻辑来处理今年的第一个月和最后一个月。我会忽略它,因为'monthrange'解决方案绰绰有余。此外,你有一个错字 - 你在'from'之前有一个倒退。 –