9.1 日期與時間的處理
程式設計師在寫程式時經常需要處理 日期和時間。因此,在Python中有兩個標準函式庫 datetime 和 time。
函式庫 datetime 是Python的標準函式庫的一部分,提供了處理 日期和時間的類別。它允許創建、操作和格式化 日期和時間,還可以執行算數操作。
datetime 函式庫的基本類別
類別 datetime.date
這個類別表示日期(年、月、日),不包括時間。它 對於處理日曆日期非常有用。
使用範例:
import datetime
# 創建日期物件
d = datetime.date(2023, 5, 24)
print(d) # 輸出:2023-05-24
# 獲取當前日期
today = datetime.date.today()
print(today)
# 訪問年份、月份和日的屬性
print(d.year) # 輸出:2023
print(d.month) # 輸出:5
print(d.day) # 輸出:24
類別 datetime.time
這個類別表示時間(時、分、秒、微秒),不包括日期。它對於處理一天中的時間非常有用。
使用範例:
import datetime
# 創建時間物件
t = datetime.time(14, 30, 45)
print(t) # 輸出:14:30:45
# 訪問小時、分鐘和秒的屬性
print(t.hour) # 輸出:14
print(t.minute) # 輸出:30
print(t.second) # 輸出:45
類別 datetime.datetime
這個類別結合了日期和時間(年、月、日、時、分、秒、微秒)。它對於處理具體時間點非常有用。
使用範例:
import datetime
# 創建日期和時間物件
dt = datetime.datetime(2023, 5, 24, 14, 30, 45)
print(dt) # 輸出:2023-05-24 14:30:45
# 獲取當前日期和時間
now = datetime.datetime.now()
print(now)
# 訪問日期和時間的屬性
print(dt.year) # 輸出:2023
print(dt.month) # 輸出:5
print(dt.day) # 輸出:24
print(dt.hour) # 輸出:14
print(dt.minute) # 輸出:30
print(dt.second) # 輸出:45
類別 datetime.timedelta
這個類別表示兩個時間點之間的差異,以天、秒和微秒表示。它對於執行日期和時間的算數操作非常有用。
使用範例:
import datetime
# 創建timedelta物件
delta = datetime.timedelta(days=10, hours=5, minutes=30)
print(delta) # 輸出:10 days, 5:30:00
# 將timedelta加到日期上
dt = datetime.datetime(2023, 5, 24, 14, 30)
new_dt = dt + delta
print(new_dt) # 輸出:2023-06-03 20:00:00
# 從日期中減去timedelta
earlier_dt = dt - delta
print(earlier_dt) # 輸出:2023-05-14 09:00:00
4.2 日期與時間的格式化與解析
我們經常需要不僅僅處理日期,還需要將其轉換為某種格式的字符串。相反的過程,即將字符串轉換為物件,通常稱為解析(parsing)。對於這些操作,Python中也有其自己的類別和方法:
方法 strftime()
方法 strftime() 用於將 datetime物件格式化為指定格式的字符串。
使用範例:
import datetime
dt = datetime.datetime(2023, 5, 24, 14, 30, 45)
# 日期和時間格式化
formatted_dt = dt.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_dt) # 輸出:2023-05-24 14:30:45
# 僅格式化日期
formatted_date = dt.strftime("%d-%m-%Y")
print(formatted_date) # 輸出:24-05-2023
# 僅格式化時間
formatted_time = dt.strftime("%H:%M:%S")
print(formatted_time) # 輸出:14:30:45
方法 strptime()
方法 strptime() 用於將字符串解析為 datetime物件,根據指定的格式。
使用範例:
import datetime
# 將字符串解析為datetime物件
date_str = "24-05-2023 14:30:45"
dt = datetime.datetime.strptime(date_str, "%d-%m-%Y %H:%M:%S")
print(dt) # 輸出:2023-05-24 14:30:45
# 將字符串解析為date物件
date_str = "24-05-2023"
d = datetime.datetime.strptime(date_str, "%d-%m-%Y").date()
print(d) # 輸出:2023-05-24
# 將字符串解析為time物件
time_str = "14:30:45"
t = datetime.datetime.strptime(time_str, "%H:%M:%S").time()
print(t) # 輸出:14:30:45
4.3 處理時區
實踐表明,我們的服務被世界各地的人使用,遺憾的是,他們住在不同的國家,並且有不同的時區(timezone)。因此,作為程式設計師,你需要學會處理它們。
當然在Python中也有一個類來處理這種情況:
類別 timezone
來自模組 datetime 的 timezone類別允許處理時區。
import datetime
# 創建具有UTC時區的datetime物件
utc_dt = datetime.datetime(2023, 5, 24, 14, 30, 45, tzinfo=datetime.timezone.utc)
print(utc_dt) # 輸出:2023-05-24 14:30:45+00:00
# 轉換到另一個時區
tokyo_tz = datetime.timezone(datetime.timedelta(hours=9))
tokyo_dt = utc_dt.astimezone(tokyo_tz)
print(tokyo_dt) # 輸出:2023-05-24 23:30:45+09:00
我們非常概括地介紹了datetime函式庫,我甚至會說是表面上的。在未來,我們還會再回到這裡,學習如何將其應用於更具體的任務。目前我只是想讓你們對它有個初步認識,擴展一下你們對標準函式庫集合的視野。
對於任何函式庫,你首先要知道它的存在,並了解可以用它做什麼。而函數的列表、它們的參數及其所有功能總是可以從官方文件中查詢。
GO TO FULL VERSION