如何在 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 资源

通过相关的交互式教程、备忘单和代码比较来扩展您的知识。