Python中如何将带微秒的字符串完整转换为datetime.datetime对象
问题原因排查
你的代码存在两个明确错误,导致无法完成转换:
- 变量名误用:第三行
strptime的第一个参数使用了未定义的time变量,直接触发NameError,你存储时间字符串的变量是now - 格式模板不匹配:
datetime对象直接转字符串的默认格式为年-月-日 时:分:秒.微秒,你使用的%m/%d/%Y是斜杠分隔的「月/日/年」格式,和实际字符串结构完全不符
可直接运行的解决方案
以下代码可以实现字符串转datetime、完整保留微秒的需求:
import datetime # 生成带微秒的原始datetime对象 original_dt = datetime.datetime.now() # 转换为字符串(默认格式自带微秒部分) time_str = str(original_dt) # 使用匹配的格式模板转换回datetime parsed_dt = datetime.datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S.%f") # 验证微秒保留效果 print("原始微秒值:", original_dt.microsecond) print("转换后微秒值:", parsed_dt.microsecond) print("两个datetime对象是否完全相等:", original_dt == parsed_dt)
补充说明
%f是Python datetime模块专门用于匹配微秒的占位符,支持000000~999999范围的微秒读取,只要你的时间字符串包含微秒部分,加上该占位符即可完整解析- 如果你的时间字符串不是datetime默认转字符串的格式,只要按照实际结构调整格式模板即可,比如字符串为
2021/11/03 03:12:14.470747,就把格式模板改为%Y/%m/%d %H:%M:%S.%f
内容的提问来源于stack exchange,提问作者Ahmed Nishaal
相关产品推荐
相关产品推荐

