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()` 函式返回兩個變數之間的所有日期。這種型別的程式有助於構建基於搜尋的數學公式。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP