Logo

新人日誌

首頁關於我部落格

新人日誌

Logo

網站會不定期發佈技術筆記、職場心得相關的內容,歡迎關注本站!

網站
首頁關於我部落格
部落格
分類系列文

© 新人日誌. All rights reserved. 2020-present.

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

最後更新:2025年2月24日Python

本文為 資料庫正規化 基本介紹系列文,第 5 篇:

  1. 資料庫正規化(Database Normalization)完整指南:新手必讀
  2. 資料正規化完整指南:從 JSON 數據到結構化資料
  3. 從 JSON 到資料庫:使用 Django ORM 建構音樂活動管理系統
  4. Django Custom Command 匯入 JSON 資料指南
  5. Python datetime 格式化指南:從基礎到實戰解析 👈進度
  6. 深入理解 Django 的 BASE_DIR
  7. Django update_or_create() 用法詳解

在 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(代表星期三)
說明4 位數年份
範例2024
說明2 位數年份
範例24
說明月份(01-12)
範例02(代表二月)
說明日期(01-31)
範例24(代表 24 號)
說明小時(00-23,24 小時制)
範例14(代表下午 2 點)
說明小時(01-12,12 小時制)
範例02(上午 2 點)
說明AM 或 PM
範例PM
說明分鐘(00-59)
範例30(代表 30 分)
說明秒(00-59)
範例15(代表 15 秒)
說明微秒(000000-999999)
範例123456
說明星期幾(完整名稱)
範例Saturday
說明星期幾(簡寫)
範例Sat
說明月份名稱(完整名稱)
範例February
說明月份名稱(簡寫)
範例Feb
說明星期幾(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 格式化語法,能夠讓你的程式碼更靈活、可讀性更高!💡


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

目前還沒有留言,成為第一個留言的人吧!

發表留言

留言將在審核後顯示。

Python

目錄

  • datetime 格式化語法
  • 解析 %Y/%m
  • 解析不同的日期格式
  • strftime() 格式化時間
  • 說明
  • 進階應用
  • 總結