在Python中打印两个时段之间的所有时段

时间:2017-05-26 12:57:25

标签: python

假设我的句点为NOV-2016MAR-2018,我需要打印所有句点,例如(NOV-2016, DEC-2016, JAN-2017MAR-2018)。可以做些什么来获得理想的结果。现在我做了这个,但我没有得到理想的结果:

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

1 个答案:

答案 0 :(得分:0)

如果你每年迭代一次,我认为处理你的问题会更容易。在每年年底将月份重置为 JAN 。如果您在最后一年,请检查每年,然后设置适当的结束月份。

以下是一个例子:

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)