如何将带小数秒的字符串转换为datetime类型?
解决带毫秒的日期时间字符串解析问题
别担心,这个问题其实很好解决!Python的datetime模块**完全支持带小数秒(毫秒/微秒)**的格式,只是你需要用对对应的格式指令而已。
关键格式符说明
你需要用到%f这个格式符,它专门用来匹配秒数后的小数部分(最多支持6位微秒,你的3位毫秒也能完美适配)。结合你的日期时间格式,完整的格式字符串应该是:%d-%m-%Y %H:%M:%S.%f
各部分对应含义:
%d: 两位数字的日期(比如13)%m: 两位数字的月份(比如04)%Y: 四位数字的年份(比如2018)%H: 24小时制的两位数字小时(比如14)%M: 两位数字的分钟(比如06)%S: 两位数字的秒(比如26)%f: 6位数字的微秒(你的866会被自动补全为866000,不影响解析)
实际代码示例
from datetime import datetime # 你的时间字符串列表示例 time_strings = [ '13-04-2018 14:06:26.866', '13-04-2018 14:06:27.131', '13-04-2018 14:06:27.404' ] # 定义格式字符串 format_pattern = '%d-%m-%Y %H:%M:%S.%f' # 批量解析时间 parsed_dates = [datetime.strptime(ts, format_pattern) for ts in time_strings] # 打印结果 for dt in parsed_dates: print(f"解析后: {dt}")
运行后输出会是:
解析后: 2018-04-13 14:06:26.866000 解析后: 2018-04-13 14:06:27.131000 解析后: 2018-04-13 14:06:27.404000
额外小技巧:如果需要转回原格式字符串
如果解析后想再转回带3位毫秒的原格式,可以用strftime配合字符串切片去掉多余的零:
for dt in parsed_dates: original_format = dt.strftime('%d-%m-%Y %H:%M:%S.%f')[:-3] print(f"转回原格式: {original_format}")
输出:
转回原格式: 13-04-2018 14:06:26.866 转回原格式: 13-04-2018 14:06:27.131 转回原格式: 13-04-2018 14:06:27.404
内容的提问来源于stack exchange,提问作者Faur
相关产品推荐
相关产品推荐

