簡體   English   中英

如何在 python 中使用日期時間創建日期列表?

[英]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])

Output

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM