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

如何获取指定格式的ISO8601 UTC日期?Moment.js使用疑问

解决你的moment.js UTC日期格式问题

一、获取目标UTC格式的方法

你当前代码生成的是本地时区的ISO格式(带+02:00偏移),要得到UTC时区且带Z后缀的格式,需要调整moment的时区模式:

  1. 生成标准ISO8601 UTC格式(带Z)
    切换到UTC模式后,自定义格式输出(不带毫秒):

    // 当前UTC时间
    let time1 = moment().utc().format('YYYY-MM-DDTHH:mm:ss[Z]');
    // 一年后的UTC时间
    let time2 = moment().add(1, 'year').utc().format('YYYY-MM-DDTHH:mm:ss[Z]');
    

    输出示例:2018-04-23T13:52:47Z,这是标准的ISO8601 UTC格式。

    如果你能接受毫秒,可以直接用moment内置的toISOString()方法:

    let time1 = moment().utc().toISOString();
    // 输出:2018-04-23T13:52:47.123Z
    
  2. 对冒号进行URL编码
    你期望的2015-07-13T22%3A00%3A00Z是把格式中的冒号做了URL编码(: → %3A),有两种实现方式:

    • 用encodeURIComponent处理整个字符串(会编码所有URL特殊字符):
      let time1Encoded = encodeURIComponent(moment().utc().format('YYYY-MM-DDTHH:mm:ss[Z]'));
      
    • 手动替换冒号(仅编码冒号):
      let time1 = moment().utc().format('YYYY-MM-DDTHH:mm:ss[Z]');
      let time1Encoded = time1.replace(/:/g, '%3A');
      

    两种方式都会得到你想要的编码后格式。

二、关于格式是否属于ISO8601 UTC的说明

  • 原始的2015-07-13T22:00:00Z是完全符合ISO8601 UTC规范的:Z是ISO8601中表示UTC时区的标准标记,等同于+00:00偏移。
  • 编码后的2015-07-13T22%3A00%3A00Z只是这个标准格式的URL安全版本,编码操作是为了避免冒号在URL中引发解析问题,其本质的时间表示仍然符合ISO8601 UTC的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:06:51