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

JavaScript如何将Date转换为毫秒保留两位的ISOString格式

实现方案

核心思路是利用Date对象自带的毫秒设置和进位逻辑,避免手动处理时间进位的边界问题,实现步骤如下:

  1. 对原始Date的毫秒值做四舍五入处理,保留到10的倍数(对应秒的小数部分两位)
  2. 将处理后的毫秒值设置到新的Date实例中(避免修改原对象)
  3. 生成标准ISOString后去掉毫秒的第三位字符,补充末尾的Z标识即可

可用代码

function formatISOWithTwoMs(inputDate) {
  const roundedMs = Math.round(inputDate.getMilliseconds() / 10) * 10;
  const processedDate = new Date(inputDate);
  processedDate.setMilliseconds(roundedMs);
  // 截断毫秒第三位和原Z后缀,补回新的Z标识
  return processedDate.toISOString().slice(0, -2) + 'Z';
}

// 测试示例
const demoDate1 = new Date('2021-11-02T05:49:12.704Z');
console.log(formatISOWithTwoMs(demoDate1)); // 输出:2021-11-02T05:49:12.70Z

const demoDate2 = new Date('2021-11-02T05:49:12.999Z');
console.log(formatISOWithTwoMs(demoDate2)); // 输出:2021-11-02T05:49:13.00Z

原代码问题说明

  • Date对象不存在microsecond属性,获取毫秒需要调用getMilliseconds()方法
  • toString()输出的是本地时区的可读时间格式,和ISO标准格式结构不同,无法直接替换得到目标结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:24:02