[英]How to create a list of dates using datetime in python?
有趣的是,我搜索了很多問題,但我找不到這個問題的簡單答案。 或者我確實找到了答案,但它不允許我靈活地更改我需要的日期格式。
如果我有這樣的指定開始和結束日期:
start = '2015-08-01' #YYY-MM-DD
end = '2020-07-06'
有沒有一種簡單的方法在 python 中使用datetime
時間來創建這些日期之間的日期列表,這些日期符合這種 YYY-MM-DD 格式? 如果是這樣,我如何隨后反轉這個列表,以便list[0]
等於今天?
這是一種使用列表推導的方法,它比循環示例快得多,並且不需要任何外部庫。
from datetime import date, timedelta
start = '2015-08-01'
end = '2020-07-06'
start_date = date.fromisoformat(start)
end_date = date.fromisoformat(end)
date_range = [
# end_date - timedelta(days=i) # For date objects
(end_date - timedelta(days=i)).isoformat() # For ISO-8601 strings
for i
in range((end_date - start_date).days)
]
reverse_range = list(reversed(date_range))
print(date_range[0])
print(reverse_range[0])
2020-07-06
2015-08-02
datetime.timedelta()
function 將在這里提供幫助。 嘗試這個:
import datetime
dates = []
d = datetime.date(2015,8,1)
while d <= datetime.date(2020,7,6):
dates.append(datetime.datetime.strftime(d,'%Y-%m-%d'))
d += datetime.timedelta(days=1)
這將填充列表dates
,如下所示:
['2015-08-01', '2015-08-02', '2015-08-03', .... , '2020-07-04', '2020-07-05', '2020-07-06']
編輯:
只需使用dates.append(d)
而不是dates.append(datetime.datetime.strftime(d,'%Y-%m-%d'))
來獲取datetime.date
對象列表而不是strings
。
在 Python 中反轉列表非常簡單:
dates = dates[::-1]
在上述之后, dates[0]
將是'2020-07-06'
。
像這樣的東西?
import datetime
def date_range(start, end):
r = (end+datetime.timedelta(days=1)-start).days
return [start+datetime.timedelta(days=i) for i in range(r)]
start = datetime.date(2015,01,01)
end = datetime.date(2020,07,06)
dateList = date_range(start, end)
print '\n'.join([str(date) for date in dateList])
您也可以使用pandas
import pandas as pd
start = '2015-08-01' #YYY-MM-DD
end = '2020-07-06'
pd.date_range(start, end)
# to start from today
pd.date_range(pd.Timestamp.today(), end)
您還可以創建具有所需頻率的范圍
pd.date_range(start, end, freq='14d') # every 14 dayes
pd.date_range(start, end, freq='H') # hourly and etc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.