0

Suppose my periods are NOV-2016 and MAR-2018 and I need to print all periods in between like (NOV-2016, DEC-2016, JAN-2017 up to MAR-2018). What can be done to get the desired result. For now i did this but I am not getting the desired result:

start_period = 'NOV-2017'
end_period = 'JUN-2019'
array = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']
year1 = int(start_period.split('-')[1])
year2 = int(end_period.split('-')[1])
diff = year2-year1
month_start = start_period.split('-')[0]
month_end = end_period.split('-')[0]
index1 = array.index(month_start)
index2 = array.index(month_end)
while diff>0:
    while(diff>=1 and (index2+1) != index1):
        if(index1==12):
            index1 = 0
        print(array[index1])
        index1+=1
    diff-=1
    if diff==0:
        break
Fahadsk
  • 1,099
  • 10
  • 24
saurav
  • 427
  • 4
  • 14

1 Answers1

0

I think it is easier to handle your problems if you iterate over every year. Reset the month to JAN at the end of every year. Check each year if you are in the final one, and then set the appropriate end month.

Here is an example:

start_period = 'NOV-2017'
end_period = 'JUN-2019'
months = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']

def printTimePeriods(start, end):
    start_month, start_year = start.split("-")
    end_month, end_year = end.split("-")
    # Cast year to int
    start_year, end_year = int(start_year), int(end_year)

    # For every year
    for year in range(start_year, end_year + 1):
        month_index = 12
        # Check if we are in the last year
        if year == end_year:
            month_index = months.index(end_month) + 1
        # For every month print the period
        for month in range(months.index(start_month), month_index):
            print months[month], year
        # New year
        start_month = "JAN"

printTimePeriods(start_period, end_period)
Hafager
  • 30
  • 3