2015-10-26 3 views
2

Мне нужен первый и последний день месяца, основанный на данном значении в течение месяца. Я могу получить в первый день, как мы получаем последний день месяца здесь (в 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

Я пробовал метод календаря, чтобы получить monthrange, и таким образом я мог бы это сделать, но я хотел использовать функцию даты, поскольку я использовал это для первого дня. ниже метод, предложенный @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 ~ Mon-Sun) и количество дней (28-31) за год, месяц." (Таким образом, OP захочет «month_end = monthrange (year, month) [1]'.) Ваше решение 'datetime' требует дополнительной логики для обработки первого и последнего месяца года. Я бы опустил это, поскольку решение «месяца» более чем достаточно. Кроме того, у вас есть опечатка - у вас есть backtick перед 'from'. –

Смежные вопросы