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

如何在JavaScript中将毫秒时间转换为本地时间的ISO格式?

将毫秒时间转换为本地时区的ISO格式

你遇到的问题是new Date(time).toISOString()返回的是UTC时区的ISO 8601字符串,而非本地时区的。JavaScript没有原生方法直接输出本地时区的ISO格式,需要手动构造符合要求的字符串。

解决方案代码

function toLocalISOString(date) {
  // 获取时区偏移量(分钟,UTC与本地时间的差值)
  const offset = date.getTimezoneOffset();
  const offsetHours = Math.abs(Math.floor(offset / 60));
  const offsetMinutes = Math.abs(offset % 60);
  // 偏移量符号:offset为正表示本地时间比UTC晚,用'-';反之用'+'
  const sign = offset > 0 ? '-' : '+';

  // 补零工具函数,确保时间部分为两位数字
  const pad = (num) => num.toString().padStart(2, '0');

  // 拼接成本地时区的ISO格式字符串
  return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}T${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}.${pad(date.getMilliseconds())}${sign}${pad(offsetHours)}:${pad(offsetMinutes)}`;
}

// 使用示例
let time = 1668268800000;
console.log(toLocalISOString(new Date(time)));

代码说明

  • getTimezoneOffset():返回本地时间与UTC时间的分钟差值,比如东八区会返回-480(因为本地时间比UTC早8小时,即480分钟)。
  • 补零函数pad:确保年、月、日、时分秒等部分都是两位数字,符合ISO格式要求。
  • 最终拼接的字符串格式为YYYY-MM-DDTHH:mm:ss.sss±HH:mm,完全符合ISO 8601的本地时区表示规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:20:48