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

使用Moment转换JSON日期时偏移量被忽略导致转换结果错误

问题原因

Moment没有忽略你日期中的+1100时区偏移,问题出在你代码里主动调用了.utc()方法:

  • 你拿到的/Date(1742130000000+1100)/格式中,1742130000000是标准UTC时间戳,对应的UTC时间为2025-03-16 13:00:00,+1100表示该时间对应的东11区当地时间为2025-03-17 00:00:00,也就是你预期的17-Mar-2025
  • 调用.utc()方法会强制将已经解析完成的带时区信息的时间转换为UTC时区展示,自然就得到了16-Mar-2025的结果,和偏移量被忽略无关。
解决方案

方案1:直接修改现有Moment代码

去掉.utc()调用即可保留原偏移对应的当地时间输出:

moment('/Date(1742130000000+1100)/').format('DD-MMM-YYYY')

执行后即可得到你预期的17-Mar-2025结果。

方案2:使用原生JS实现(无需引入第三方库)

目前Moment官方已经停止维护,更推荐用原生JS实现该转换逻辑:

const rawDate = '/Date(1742130000000+1100)/';
// 提取时间戳和时区偏移信息
const dateMatch = rawDate.match(/Date\((\d+)([+-])(\d{2})(\d{2})\)/);
const timestamp = Number(dateMatch[1]);
const offsetSign = dateMatch[2] === '+' ? 1 : -1;
const offsetTotalMs = offsetSign * (Number(dateMatch[3]) * 3600 + Number(dateMatch[4]) * 60) * 1000;
// 计算偏移后的实际时间
const targetDate = new Date(timestamp + offsetTotalMs);
// 格式化输出为DD-MMM-YYYY格式
const formattedDate = targetDate.toLocaleDateString('en-GB', {
  day: '2-digit',
  month: 'short',
  year: 'numeric'
}).replaceAll(' ', '-');

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

相关产品推荐
方舟 Agent Plan

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

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