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

如何将'20211114025320+0000'格式字符串转换为JS Date对象

JS紧凑时间格式转Date对象问题解答

结论

不需要编写复杂的自定义转换函数。原生JS的Date构造器本身支持解析标准ISO 8601格式的时间字符串,但无法直接识别YYYYMMDDHHmmss+0000这种无分隔符的紧凑格式,所以只需要做非常简单的字符串预处理即可,整体实现成本极低。

可用实现方案

方案1:按位置截取拼接(兼容性最好,可读性高)

直接根据固定格式截取各时间片段,拼接成Date可直接识别的标准ISO格式即可:

function compactStrToDate(compactStr) {
  const y = compactStr.slice(0, 4)
  const m = compactStr.slice(4, 6)
  const d = compactStr.slice(6, 8)
  const h = compactStr.slice(8, 10)
  const min = compactStr.slice(10, 12)
  const s = compactStr.slice(12, 14)
  return new Date(`${y}-${m}-${d}T${h}:${min}:${s}.000Z`)
}

// 测试
const targetDate = compactStrToDate('20211114025320+0000')
console.log(targetDate.toISOString()) // 输出 2021-11-14T02:53:20.000Z

方案2:正则替换(代码更简洁)

如果不需要特别高的可读性,用正则替换一步就能完成预处理:

const compactStr = '20211114025320+0000'
const targetDate = new Date(compactStr.replace(/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2}).*/, '$1-$2-$3T$4:$5:$6.000Z'))
console.log(targetDate.toISOString()) // 输出结果符合要求

注意事项

  • 不要直接把原始紧凑格式字符串传给Date构造器,不同浏览器的非标准解析逻辑不同,会出现兼容性问题。
  • 如果你的输入字符串时区不固定为+0000,只需要额外截取最后的时区字段拼接进去即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:06:05