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

如何将datetime.datetime格式的字符串转换为datetime对象?

解决方案

方法1:使用ast.literal_eval(安全的字面量解析)

该方法无需手动解析字符串,且相比原生eval不会执行恶意代码,更适合处理不可信的日志输入。

import ast
from datetime import datetime

# 示例时间戳字符串
log_time_str = "datetime.datetime(2021, 9, 10, 10, 15, 0, 250362)"
# 解析字符串为datetime对象
dt_obj = ast.literal_eval(log_time_str)

# 验证结果,可正常调用strftime
print(dt_obj.strftime("%Y-%m-%d %H:%M:%S.%f"))

注意:使用前要确保当前环境已经导入datetime模块,否则解析时会抛出NameError。

方法2:正则匹配提取参数构造(兼容性更强)

如果你不想依赖datetime模块的导入状态,或者需要对异常格式做兼容,可以手动提取时间参数再构造对象。

import re
from datetime import datetime

log_time_str = "datetime.datetime(2021, 9, 10, 10, 15, 0, 250362)"
# 提取括号内的所有数字
nums = list(map(int, re.findall(r'\d+', log_time_str)))
# 按datetime参数顺序构造对象,*nums会自动拆分年、月、日、时、分、秒、微秒参数
dt_obj = datetime(*nums)

print(dt_obj.strftime("%Y-%m-%d %H:%M:%S.%f"))

该方法容错性更高,即使日志中datetime的前缀有拼写差异,只要括号内的数字顺序正确就能正常解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:06:04