2016-05-26 4 views
3

Мне нужно реализовать код, который поможет мне получить список месяцев между двумя датами.Получение списка месяцев между двумя датами

У меня уже есть код, который даст месяц дельта, Это количество месяцев.

На самом деле, мне нужен способ получить список месяцев между двумя датами.

Здесь это код для получения дельта месяца.

import calendar 
import datetime 

def calculate_monthdelta(date1, date2): 
    def is_last_day_of_the_month(date): 
     days_in_month = calendar.monthrange(date.year, date.month)[1] 
     return date.day == days_in_month 
    imaginary_day_2 = 31 if is_last_day_of_the_month(date2) else date2.day 
    monthdelta = (
     (date2.month - date1.month) + 
     (date2.year - date1.year) * 12 + 
     (-1 if date1.day > imaginary_day_2 else 0) 
     ) 
    print monthdelta 
    return monthdelta 

date2 = datetime.datetime.today() 
date1 = date2.replace(month=01) 

calculate_monthdelta(date1, date2) 

Теперь мне нужен способ получить список месяцев между тем же.

Любая помощь приветствуется Если есть какой-либо способ получить список месяцев между двумя датами.

Примечание: Пожалуйста, предложите любую идею (если есть), кроме кода, который я использовал здесь.

+0

пожалуйста обеспечивает пример входных данных, и желаемый результат – Yaron

+0

см: http://stackoverflow.com/questions/4039879/best-way-to-find-the-months -between-two-dates – Harsha

ответ

-1

Изменение оператора печати на:
print calendar.month_name[:monthdelta]

0
from datetime import datetime,timedelta 
import time 
d = date1 
delta = timedelta(months=1) 
while d <= date2: 
    print d.strftime("%m") 
    d += delta 
+0

Это было первое, что мне пришло в голову, но «timedelta» не принимает месяцы. –

+0

Вы правы, предоставляется другой ответ (см. Ниже). –

-1

Потому что я не знаю ваш желаемый результат я не могу формат шахты, но это возвращает целое число от общего количества месяцев между двумя датами ,

def calculate_monthdelta(date1, date2): 
    print abs(date1.year - date2.year) * 12 + abs(date1.month - date2.month) 
7

попробовать этот

import datetime 
import time 
from dateutil.rrule import rrule, MONTHLY 
months = [dt.strftime("%m") for dt in rrule(MONTHLY, dtstart=date1, until=date2)] 
print months 
Смежные вопросы