如何在 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 资源
通过相关的交互式教程、备忘单和代码比较来扩展您的知识。