本文為 資料庫正規化 基本介紹系列文,第 5 篇:
在 Python 中,處理日期和時間是一個常見的需求,無論是在數據分析、API 整合,還是 Web 開發中,都可能會用到 datetime 模組。
而在 datetime 模組裡,格式化日期與時間是一個重要的技巧,能夠幫助我們在 字串與 datetime 物件之間轉換。
本文將會詳細介紹 Python datetime 格式化語法,讓你從基礎到應用都能夠輕鬆掌握!
datetime 格式化語法
在 Python 的 datetime 模組中,% 符號用來 指示一個佔位符(placeholder),用來對應特定的日期或時間單位。例如:
這些格式代碼可以自由組合,來解析或格式化各種日期與時間。
解析 %Y/%m
基礎範例
from datetime import datetime
date_str = "2024/02"
date_obj = datetime.strptime(date_str, "%Y/%m")
print(date_obj)
結果
datetime.datetime(2024, 2, 1, 0, 0)解釋
2024/02會根據%Y/%m解析成datetime(2024, 2, 1, 0, 0)。- 因為沒有提供
日(%d),Python 預設會補1 號。
解析不同的日期格式
當我們處理不同格式的日期時,可以靈活地使用 strptime() 來解析。例如:
date1 = datetime.strptime("2024/02/24", "%Y/%m/%d") # 解析完整的日期
print(date1) # datetime.datetime(2024, 2, 24, 0, 0)
date2 = datetime.strptime("2024/02", "%Y/%m") # 解析只有 年/月
print(date2) # datetime.datetime(2024, 2, 1, 0, 0)
date3 = datetime.strptime("24-02-24", "%y-%m-%d") # 兩位數年份
print(date3) # datetime.datetime(2024, 2, 24, 0, 0)
date4 = datetime.strptime("Feb 24, 2024", "%b %d, %Y") # 英文月份
print(date4) # datetime.datetime(2024, 2, 24, 0, 0)
📌 透過不同的格式代碼,我們可以解析多種不同的日期表示方式!
strftime() 格式化時間
除了 strptime() 解析字串為 datetime,我們也可以用 strftime() 將 datetime 轉換為格式化的字串:
now = datetime.now()
formatted_date = now.strftime("%Y/%m/%d %H:%M:%S")
print(formatted_date) # 例如輸出: "2024/02/24 14:45:30"說明
strftime("%Y/%m/%d %H:%M:%S")讓datetime物件轉為「YYYY/MM/DD HH:MM:SS」格式的字串。- 這在顯示時間戳記、日誌記錄、網頁顯示時間等情境非常實用!
進階應用
✅ 取得當前年月
如果你只想取得當前的「年/月」,可以這樣做:
now = datetime.now()
year_month = now.strftime("%Y/%m")
print(year_month) # 例如輸出: "2024/02"
✅ 比較兩個日期
date1 = datetime.strptime("2024/02/24", "%Y/%m/%d")
date2 = datetime.strptime("2023/12/31", "%Y/%m/%d")
diff = date1 - date2
print(diff.days) # 計算相差天數
✅ 取得下一個月的日期
from datetime import timedelta
next_month = now.replace(month=now.month % 12 + 1, day=1)
print(next_month.strftime("%Y/%m/%d")) # 下個月的 1 號
總結
✅ % 是 Python datetime 模組的格式化符號,用來指示日期時間的佔位符。
✅ %Y/%m 代表「年/月」,如果沒有提供 日,預設為 1 號。
✅ 可以用 strptime() 解析字串 → datetime,也可以用 strftime() 格式化 datetime → 字串。
✅ datetime 可以進行日期比較、計算時間差、獲取特定時間資訊。
無論是在 Django、資料分析、API 時間處理、排程任務 等場景,掌握 datetime 格式化語法,能夠讓你的程式碼更靈活、可讀性更高!💡
這樣的格式是否符合你的需求呢?還是有其他特定應用需要補充呢?😃