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

如何在Angular中正确将毫秒数格式化为dd:hh:mm:ss格式

问题原因

你目前的实现存在两个核心问题:

  • new Date(milliseconds) 生成的是时间点(1970年1月1日UTC 00:00:00加上对应毫秒的时刻),不是时间间隔,formatDate的dd标识符取的是该日期的当月天数,自然和你要的间隔天数不匹配
  • formatDate默认会按照本地时区格式化时间,时区偏移会导致小时、甚至日期出现额外的增量,这就是你得到01:01:03:26的原因
解决方案

直接手动计算每个单位的数值,再补零格式化即可,代码如下:

showTimeWithHour(milliSeconds: number): string {
    // 定义各单位对应的毫秒数
    const oneDay = 24 * 60 * 60 * 1000;
    const oneHour = 60 * 60 * 1000;
    const oneMinute = 60 * 1000;
    const oneSecond = 1000;

    // 计算各单位数值
    const days = Math.floor(milliSeconds / oneDay);
    const remainingAfterDays = milliSeconds % oneDay;
    const hours = Math.floor(remainingAfterDays / oneHour);
    const remainingAfterHours = remainingAfterDays % oneHour;
    const minutes = Math.floor(remainingAfterHours / oneMinute);
    const remainingAfterMinutes = remainingAfterHours % oneMinute;
    const seconds = Math.floor(remainingAfterMinutes / oneSecond);

    // 补零格式化,不足两位前面补0
    const padZero = (num: number) => num.toString().padStart(2, '0');
    
    return `${padZero(days)}:${padZero(hours)}:${padZero(minutes)}:${padZero(seconds)}`;
}

传入206000毫秒测试,可直接得到预期结果00:00:03:26。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:18:02