Python 日期範圍迭代


日期範圍由起始日期、結束日期以及兩者之間的所有日期定義。在 Python 中,我們可以使用一些內建函式,例如 `datetime.date()`、`range()`、`timedelta()` 和 `delta()` 來迭代日期範圍。

讓我們來看一個例子。

起始日期:2023-06-26

結束日期:2023-06-30

因此,最終的日期範圍結果為:

2023-06-26

2023-06-27

2023-06-28

2023-06-29

2023-06-30

語法

以下語法在示例中使用:

datetime.date()

`date()` 是 Python `datetime` 庫的一個例項函式,它返回日期物件。

range()

內建函式 `range()` 透過返回根據給定長度排序的數字來定義。

timedelta()

`timedelta()` 是一個內建的 Python 函式,它遵循名為 `datetime` 的庫,並返回日期之間的差值。

使用 while 迴圈

在下面的示例中,首先匯入將用於設定日期的 `datetime` 模組。接下來,將兩個不同的日期初始化到各自的變數中,這些變數將用於計算差值。然後,使用 `while` 迴圈,它根據 `<=` 運算子設定條件以獲取日期範圍。使用帶有 `+=` 運算子的內建函式 `timedelta()`,它顯示所有日期。

示例

import datetime
start = datetime.date(2023, 6, 3)
end = datetime.date(2023, 6, 4)
res_date = start
print("The range dates are:")
while res_date <= end:
    print(res_date)
    res_date += datetime.timedelta(days=1)

輸出

 The range dates are: 
 2023-06-03 
 2023-06-04

使用列表推導式

在下面的示例中,程式以包含日期資訊的 `datetime` 模組開頭。然後,使用列表推導式查詢兩個日期之間的差值。這可以透過使用 `timedelta` 函式以及遞增的天數來完成,從起始日期開始,直到到達結束日期。

示例

import datetime
start = datetime.date(2023, 6, 16)
end = datetime.date(2023, 6, 19)
date_of_range = [start + datetime.timedelta(days=delta) for delta in range((end - start).days + 1)]
print("The range dates are:")
for res_date in date_of_range:
    print(res_date)

輸出

The range dates are: 
2023-06-16 
2023-06-17 
2023-06-18
2023-06-19 

使用 timedelta()

在下面的示例中,我們將使用 `for` 迴圈,其中變數 `delta` 使用內建函式 `range()` 迭代兩個初始化日期。接下來,將起始日期與 `timedelta()` 相加,它接受引數 `days=delta`,返回兩個日期之間的差值,並生成程式的最終結果。

示例

import datetime
start = datetime.date(2023, 6, 1)
end = datetime.date(2023, 6, 5)
print("The range of dates:")
# Calculate the differences using range()
for delta in range((end - start).days + 1):
    result_date = start + datetime.timedelta(days=delta)
    print(result_date)

輸出

The range of dates: 
2023-06-01 
2023-06-02 
2023-06-03 
2023-06-04 
2023-06-05

使用遞迴函式生成範圍列表中的偶數日期

在下面的示例中,程式使用 `datetime` 庫來設定日期。然後,使用遞迴函式,它接受兩個引數來設定起始日期和結束日期,這些日期將用於處理日期範圍。接下來,使用 `while` 迴圈,它根據 `<=` 運算子設定差值條件,並使用 `timedelta()` 計算偶數日期。接下來,將起始日期和結束日期初始化到各自的變數中。最後,使用 `for` 迴圈迭代這兩個變數(即 `start_date` 和 `end_date`)以生成偶數日期。

示例

import datetime
# Function definition
def range_date(start, end):
    res_date = start
    while res_date <= end:
        yield res_date
        res_date += datetime.timedelta(days=2)
start_date = datetime.date(2023, 6, 10)
end_date = datetime.date(2023, 6, 20)
print("The range dates are-")
for c_date in range_date(start_date, end_date):
    print(c_date)

輸出

The range dates are-
2023-06-10
2023-06-12
2023-06-14
2023-06-16
2023-06-18
2023-06-20

結論

日期範圍的迭代指定了兩個變數,即起始日期和結束日期。使用 `for` 迴圈,它根據特定條件和運算迭代日期。然後使用 `timedelta()` 函式返回兩個變數之間的所有日期。這種型別的程式有助於構建基於搜尋的數學公式。

更新於:2023-08-14

6000+ 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.