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

JavaScript中如何将'20220722T141444Z'字符串转换为Date对象

JavaScript 实现 YYYYMMDDTHHMMSSZ 格式字符串转Date对象方案

你给出的'20220722T141444Z'是无分隔符的ISO 8601标准UTC时间格式,JavaScript可以通过以下两种方式实现转换,不需要依赖特定解析库:


方案1:原生手动解析(全环境兼容,推荐)

该方法零依赖、所有JS运行环境都支持,不会出现引擎解析差异问题。核心逻辑是按固定位拆分字符串的年、月、日、时、分、秒字段,通过Date.UTC构造UTC时间(匹配字符串末尾Z代表的UTC时区):

注意:JavaScript中Date对象的月份是从0开始计数(0代表1月,11代表12月),解析到的月份值需要减1。

function parseISOBasicFormat(dateStr) {
  // 基础格式校验
  if (!/^\d{8}T\d{6}Z$/.test(dateStr)) {
    throw new Error('日期格式不符合要求,需为YYYYMMDDTHHMMSSZ格式');
  }
  return new Date(Date.UTC(
    +dateStr.slice(0, 4),    // 年
    +dateStr.slice(4, 6) - 1,// 月(0起始,需减1)
    +dateStr.slice(6, 8),    // 日
    +dateStr.slice(9, 11),   // 时
    +dateStr.slice(11, 13),  // 分
    +dateStr.slice(13, 15)   // 秒
  ));
}

// 调用测试
const myDate = parseISOBasicFormat('20220722T141444Z');
console.log(myDate.toISOString()); // 输出:2022-07-22T14:14:44.000Z,和原始时间完全一致

方案2:借助第三方日期库解析

如果项目中已经引入了通用日期处理库,可以直接用库的自定义格式解析能力,不需要自己写拆分逻辑:

  • 以轻量库dayjs为例,需要搭配自定义格式解析、UTC两个插件:
import dayjs from 'dayjs';
import customParseFormat from 'dayjs/plugin/customParseFormat';
import utc from 'dayjs/plugin/utc';

dayjs.extend(customParseFormat);
dayjs.extend(utc);

// 按指定格式解析为UTC时间,再转原生Date对象
const myDate = dayjs.utc('20220722T141444Z', 'YYYYMMDDTHHmmssZ').toDate();

注意事项

不要直接使用new Date('20220722T141444Z')尝试解析:该紧凑格式不属于ECMAScript标准要求Date构造函数必须支持的格式,部分低版本浏览器、JS运行环境会出现解析失败、返回Invalid Date的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 07:09:17