Python datetime 格式化指南:從基礎到實戰解析
更新日期: 2025 年 2 月 24 日
本文為 資料庫正規化 基本介紹系列文,第 5 篇:
在 Python 中,處理日期和時間是一個常見的需求,無論是在數據分析、API 整合,還是 Web 開發中,都可能會用到 datetime
模組。
而在 datetime
模組裡,格式化日期與時間是一個重要的技巧,能夠幫助我們在 字串與 datetime
物件之間轉換。
本文將會詳細介紹 Python datetime
格式化語法,讓你從基礎到應用都能夠輕鬆掌握!
datetime
格式化語法
在 Python 的 datetime
模組中,%
符號用來 指示一個佔位符(placeholder),用來對應特定的日期或時間單位。例如:
格式代碼 | 說明 | 範例 |
---|---|---|
%Y | 4 位數年份 | 2024 |
%y | 2 位數年份 | 24 |
%m | 月份(01-12) | 02(代表二月) |
%d | 日期(01-31) | 24(代表 24 號) |
%H | 小時(00-23,24 小時制) | 14(代表下午 2 點) |
%I | 小時(01-12,12 小時制) | 02(上午 2 點) |
%p | AM 或 PM | PM |
%M | 分鐘(00-59) | 30(代表 30 分) |
%S | 秒(00-59) | 15(代表 15 秒) |
%f | 微秒(000000-999999) | 123456 |
%A | 星期幾(完整名稱) | Saturday |
%a | 星期幾(簡寫) | Sat |
%B | 月份名稱(完整名稱) | February |
%b | 月份名稱(簡寫) | Feb |
%w | 星期幾(0-6,0 代表星期天) | 3(代表星期三) |
這些格式代碼可以自由組合,來解析或格式化各種日期與時間。
解析 %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
格式化語法,能夠讓你的程式碼更靈活、可讀性更高!💡
這樣的格式是否符合你的需求呢?還是有其他特定應用需要補充呢?😃