我想创建一个以小时为增量的日期列表,如下所示:
['2012060100', '2012060101', '2012060102', '2012060103', '2012060104', '2012060105', '2012060106', '2012060107', '2012060108', '2012060109', '2012060110', '2012060111', '2012060112', '2012060113', '2012060114', '2012060115', '2012060116', '2012060117', '2012060118', '2012060119', '2012060120', '2012060121', '2012060122', '2012060123', '2012060200', '2012060201', '2012060202'... '2012083122', '2012083123']
Run Code Online (Sandbox Code Playgroud)
我正在尝试这样的事情:
deb = '20120601'
fin = '20120831'
start = datetime.datetime.strptime(deb, "%Y%m%d")
end = datetime.datetime.strptime(fin, "%Y%m%d")
date_lst = [start + datetime.timedelta(days=x) for x in range(0, ((end-start).days)+1)]
date_list = [dt.strftime("%Y%m%d") for dt in date_lst]
Run Code Online (Sandbox Code Playgroud)
但它仅打印之间的日期列表start和end这样的:
['20120601', '20120602', '20120603', '20120604', ... , '20120830', '20120831']
Run Code Online (Sandbox Code Playgroud)
如果需要小时,则需要包含'%H'在格式字符串中。如果您添加timedelta以天为单位的 s,您也不会获得小时数。
from datetime import datetime as dt, timedelta
deb = '20120601'
fin = '20120831'
start = dt.strptime(deb, "%Y%m%d")
end = dt.strptime(fin, "%Y%m%d") + timedelta(days=1)
def hour_range(start, end):
while start < end:
yield start
start += timedelta(hours=1)
date_list = [h.strftime('%Y%m%d%H') for h in hour_range(start, end)]
Run Code Online (Sandbox Code Playgroud)