第24天:日期與時間處理
課程簡介
在 Python 中,處理日期與時間是一個常見的需求,無論是進行計時操作、處理時間差異,還是將日期時間格式化輸出。Python 提供了內建的 datetime
模組,來實現各種日期與時間相關的功能。在今天的課程中,我們將學習如何使用 datetime
模組來創建、操作和格式化日期與時間。
學習內容
1. datetime
模組的介紹
datetime
模組主要提供了以下幾個類別來處理日期與時間:
datetime.date
:處理日期(年、月、日)。datetime.time
:處理時間(時、分、秒、微秒)。datetime.datetime
:同時處理日期和時間。datetime.timedelta
:處理時間差。datetime.tzinfo
:處理時區。
範例:
1
2
3
4
5
from datetime import datetime
# 取得當前日期和時間
now = datetime.now()
print("現在時間:", now)
2. 日期與時間的創建與格式化
2.1 創建日期與時間
可以通過 datetime
類別創建具體的日期與時間。
範例:
1
2
3
4
5
from datetime import datetime
# 創建特定日期和時間
dt = datetime(2024, 10, 24, 14, 30, 45)
print("指定的日期和時間:", dt)
2.2 格式化日期與時間
使用 strftime()
函數可以將日期與時間轉換為指定的字串格式。常用格式符號如下:
%Y
:四位數的年份%m
:月份(01-12)%d
:天(01-31)%H
:小時(00-23)%M
:分鐘(00-59)%S
:秒(00-59)
範例:
1
2
formatted_date = dt.strftime("%Y-%m-%d %H:%M:%S")
print("格式化日期時間:", formatted_date)
2.3 解析字串為日期
使用 strptime()
函數可以將字串解析為 datetime
對象。
範例:
1
2
3
date_str = "2024-10-24 14:30:45"
parsed_date = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
print("解析後的日期時間:", parsed_date)
3. 時間加減與時間差
3.1 使用 timedelta
進行時間加減
timedelta
可以用來進行時間的加減運算。
範例:
1
2
3
4
5
6
7
8
9
from datetime import timedelta
# 加上 10 天
new_date = now + timedelta(days=10)
print("10 天後的日期:", new_date)
# 減去 5 小時
new_time = now - timedelta(hours=5)
print("5 小時前的時間:", new_time)
3.2 計算兩個日期的差異
可以通過相減的方式計算兩個 datetime
對象之間的時間差。
範例:
1
2
3
4
date1 = datetime(2024, 10, 24)
date2 = datetime(2024, 11, 10)
difference = date2 - date1
print("日期差異:", difference.days, "天")
4. 時區處理
pytz
模組提供了豐富的時區支持,讓我們能夠在多個時區之間進行時間轉換。
範例:
1
2
3
4
5
6
7
import pytz
from datetime import datetime
# 設定時區
timezone = pytz.timezone('Asia/Taipei')
local_time = datetime.now(timezone)
print("台北時間:", local_time)
教學重點
datetime
模組的基本使用:掌握如何創建和操作日期與時間對象。- 日期與時間格式化:學會使用
strftime()
和strptime()
來進行日期與時間的格式轉換。 - 時間加減與時間差計算:學會使用
timedelta
進行時間的加減運算,並計算兩個時間之間的差異。 - 時區處理:了解如何使用
pytz
模組進行時區轉換。
任務
- 創建一個
datetime
對象,代表今天的日期與時間,並將其格式化為 “YYYY-MM-DD HH:MM:SS” 格式。 - 計算從今天起 30 天後的日期。
- 計算兩個日期(例如 2024-10-01 和 2024-12-31)之間的天數差異。
- 使用
pytz
將當前時間轉換為紐約時區的時間。
本文章以 CC BY 4.0 授權