Python datetime 格式化指南:從基礎到實戰解析

更新日期: 2025 年 2 月 24 日

在 Python 中,處理日期和時間是一個常見的需求,無論是在數據分析、API 整合,還是 Web 開發中,都可能會用到 datetime 模組。

而在 datetime 模組裡,格式化日期與時間是一個重要的技巧,能夠幫助我們在 字串與 datetime 物件之間轉換

本文將會詳細介紹 Python datetime 格式化語法,讓你從基礎到應用都能夠輕鬆掌握!


datetime 格式化語法

在 Python 的 datetime 模組中,% 符號用來 指示一個佔位符(placeholder),用來對應特定的日期或時間單位。例如:

格式代碼說明範例
%Y4 位數年份2024
%y2 位數年份24
%m月份(01-12)02(代表二月)
%d日期(01-31)24(代表 24 號)
%H小時(00-23,24 小時制)14(代表下午 2 點)
%I小時(01-12,12 小時制)02(上午 2 點)
%pAM 或 PMPM
%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 格式化語法,能夠讓你的程式碼更靈活、可讀性更高!💡


這樣的格式是否符合你的需求呢?還是有其他特定應用需要補充呢?😃

Similar Posts