2017-04-01 79 views

回答

2

如果我沒有誤解你的意思,你可以得到中年,並將其附加到字符串,如-12-31-01-01

start_date = '2015-03-20' 
end_date = '2018-03-12' 

def split_date(s,e): 
    return [[s,s[:4]+"-12-31"]]+ [['%s-01-01'%(str(i)), '%s-12-31'%(str(i))] for i in range(int(s[:4])+1,int(e[:4]))]+[[e[:4] + "-01-01", e]] 

print(split_date(start_date,end_date)) 

結果:

[['2015-03-20', '2015-12-31'], ['2016-01-01', '2016-12-31'], ['2017-01-01', '2017-12-31'], ['2018-01-01', '2018-03-12']] 
+0

謝謝@McGrady,這看起來像我想要的!任何機會,你可以將它轉換成正常的循環,會使它更容易理解 – user308827

0

修改你鏈接的原代碼:

from datetime import datetime, timedelta 


def date_range(start, end, interval): 
    start = datetime.strptime(start, "%Y%m%d") 
    end = datetime.strptime(end, "%Y%m%d") 
    diff = (end - start)/interval 
    for i in range(interval): 
     if i == 0: 
      date_additive = 0 
     else: 
      date_additive = 1 
     yield ["{0}-{1}-{2}".format(str(((start + diff * i) + timedelta(days=date_additive)).strftime("%Y").zfill(2)), 
            str(((start + diff * i) + timedelta(days=date_additive)).strftime("%m").zfill(2)), 
            str(((start + diff * i) + timedelta(days=date_additive)).strftime("%d").zfill(2))), 
       "{0}-{1}-{2}".format(str((start + diff * (i + 1)).strftime("%Y").zfill(2)), 
            str((start + diff * (i + 1)).strftime("%m").zfill(2)), 
            str((start + diff * (i + 1)).strftime("%d").zfill(2)))] 

輸入例:

def main(): 
    begin = "20150320" 
    end = "20170312" 
    interval = 3 
    print(list(date_range(begin, end, interval))) 

main() 

結果:

[['2015-03-20', '2015-11-16'], ['2015-11-17', '2016-07-14'], ['2016-07-15', '2017-03-12']] 
相關問題