You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python将"March 5, 2024, 5:33 a.m."转为datetime.datetime对象?

将带"a.m."的日期字符串转为Python datetime对象

问题描述

我有原始日期字符串:March 5, 2024, 5:33 a.m.,请问能否使用Python将其转换为datetime.datetime(2024, 3, 5, 5, 33)?我已尝试以下代码:

from datetime import datetime
date_string = "March 5, 2024, 5:33 a.m."
date_object = datetime.strptime(date_string, "%B %d, %Y, %I:%M %p")
desired_datetime = datetime(2024, 3, 5, 5, 33)
print(desired_datetime)

解决方法

可以实现,但你的代码会触发ValueError——因为Python标准库的strptime方法中,%p格式符默认只识别不带点的AM/PM或am/pm,无法匹配字符串里带点的a.m.格式。

这里提供两种可行的解决思路:

方法一:预处理字符串替换格式

先把日期字符串里的a.m.替换为am,p.m.替换为pm,再用strptime解析:

from datetime import datetime
date_string = "March 5, 2024, 5:33 a.m."
# 替换带点的上午/下午标识
processed_date = date_string.replace("a.m.", "am").replace("p.m.", "pm")
date_object = datetime.strptime(processed_date, "%B %d, %Y, %I:%M %p")
print(date_object)  # 输出:2024-03-05 05:33:00

方法二:使用dateutil库自动解析

第三方库python-dateutil的parser工具能自动识别带点的a.m./p.m.格式,无需手动替换。先安装库:

pip install python-dateutil

然后执行代码:

from datetime import datetime
from dateutil import parser

date_string = "March 5, 2024, 5:33 a.m."
date_object = parser.parse(date_string)
print(date_object)  # 输出:2024-03-05 05:33:00

两种方法最终都能生成你需要的datetime.datetime(2024, 3, 5, 5, 33)对象。

内容的提问来源于stack exchange,提问作者kishan Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 08:50:06