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

如何将带小数秒的字符串转换为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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:14:49