如何用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
相关产品推荐
相关产品推荐

