如何在 Python 中將字串解析為日期時間 (strptime)
了解如何在 Python 中將字串轉換為日期時間物件。掌握strptime方法,解析日期字串,處理時區,防止格式錯誤。
概述
在建立處理使用者表單提交、抓取 Web 資料庫、解析伺服器日誌或匯入 CSV 工作表的應用程式時,您將經常收到原始文字字串形式的日期和時間資訊(例如「2026-05-25 15:45」)。由於無法對字串執行計算、日期算術或排序,因此必須將它們解析為 Python 日期時間物件。
此轉換的主要方法是「datetime.strptime(date_string, format_string)」。該名稱代表“字串解析時間”。此函數採用原始日期字串和包含指令的格式範本(例如「%Y」代表年份,「%m」代表月份,「%d」代表日期),並傳回對應的日期時間物件。
如果輸入字串與提供的格式範本不完全匹配,Python 會引發「ValueError」。為了防止崩潰,請始終將“strptime()”操作包裝在“try- except”區塊中。對於解析各種非結構化日期輸入的應用程序,“python-dateutil”等外部庫可以幫助自動解析器檢測。
程式碼和執行輸出
此腳本示範如何使用 datetime.strptime 解析日期字串、處理無效輸入以及計算日期差異。
parse_datetime.py
在編輯器中嘗試from datetime import datetime
# 1. Basic parsing using strptime
date_str = "2026-05-25 18:30:00"
format_template = "%Y-%m-%d %H:%M:%S"
parsed_date = datetime.strptime(date_str, format_template)
print("Parsed DateTime:", parsed_date)
print("Month parsed:", parsed_date.month)
print("Hour parsed:", parsed_date.hour)
# 2. Handling parse errors safely
bad_date_str = "25/05/2026"
try:
datetime.strptime(bad_date_str, "%Y-%m-%d")
except ValueError as e:
print(f"\nParse Error: {e}")
# Correcting the format
corrected_date = datetime.strptime(bad_date_str, "%d/%m/%Y")
print("Corrected Parse:", corrected_date.date())端子輸出
Parsed DateTime: 2026-05-25 18:30:00
Month parsed: 5
Hour parsed: 18
Parse Error: time data '25/05/2026' does not match format '%Y-%m-%d'
Corrected Parse: 2026-05-25逐步實施
- 從日期時間模組匯入日期時間類別。
- 確定日期字串的確切結構(例如日、月、分隔符號)。
- 使用適當的指令(如 %Y、%m、%d)呼叫 datetime.strptime(date_string, format_pattern)。
- 將解析語句包裝在 try- except ValueError 區塊中以優雅地處理格式錯誤的字串。
常見問題解答
strftime 和 strptime 有什麼不同?
strptime(字串解析時間)解析字串以建立日期時間物件。 strftime(字串格式時間)將日期時間物件格式化為可讀取的字串表示形式。
如何解析 ISO 8601 日期字串(例如“2026-05-25T18:30:00Z”)?
在Python 3.7+ 中,您可以使用內建的 datetime.fromisoformat(string) 函數,該函數可以有效地處理 ISO 字串,而無需手動格式範本。
相關主題
推薦的 Python 資源
透過相關的互動式教學、備忘單和程式碼比較來擴展您的知識。