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

Python使用datetime将毫秒转字符串时如何保留末尾零值?

问题根因

你现有代码的问题出在:当输入的毫秒数是1000的整数倍时,str(datetime.timedelta(milliseconds=t)) 输出的字符串不会携带小数点及后续的毫秒部分,此时直接执行[:-3]会截断末尾的秒数内容,导致格式异常。

修复方案

方案1:最小改动适配原有逻辑

只需要增加对字符串是否包含小数点的判断,整秒场景直接补全,000后缀即可:

import datetime

def milliseconds_to_str(t):
     """Converts the number of milliseconds to HH:MM:SS,ms time"""
     td_str = str(datetime.timedelta(milliseconds=t))
     if '.' in td_str:
         return td_str.replace('.', ',')[:-3]
     else:
         return f"{td_str},000"

方案2:手动计算时分秒毫秒(兼容性更强)

如果要完全规避timedelta字符串输出的格式波动,可以手动拆分时间单位格式化输出,逻辑更可控:

import datetime

def milliseconds_to_str(t):
     """Converts the number of milliseconds to HH:MM:SS,ms time"""
     total_seconds = t // 1000
     ms = t % 1000
     hours = total_seconds // 3600
     minutes = (total_seconds % 3600) // 60
     seconds = total_seconds % 60
     return f"{hours}:{minutes:02d}:{seconds:02d},{ms:03d}"

验证结果

使用你给出的测试用例验证:

  • milliseconds_to_str(1000) → 0:00:01,000 符合预期
  • milliseconds_to_str(960000)(你示例中1000000应为笔误,960000毫秒对应16分钟整)→ 0:16:00,000 符合预期
  • milliseconds_to_str(4000400) → 1:06:40,400 输出正常
  • milliseconds_to_str(80808231) → 22:26:48,231 输出正常
  • milliseconds_to_str(80808000) → 22:26:48,000 符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:18:03