JavaScript如何将Date转换为毫秒保留两位的ISOString格式
实现方案
核心思路是利用Date对象自带的毫秒设置和进位逻辑,避免手动处理时间进位的边界问题,实现步骤如下:
- 对原始Date的毫秒值做四舍五入处理,保留到10的倍数(对应秒的小数部分两位)
- 将处理后的毫秒值设置到新的Date实例中(避免修改原对象)
- 生成标准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
相关产品推荐
相关产品推荐

