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

如何使用Moment.js或其他工具转换API返回的指定日期格式?

日期格式转换实现方案

方法一:使用Moment.js

Moment.js可以快速解析并格式化日期,步骤清晰直接:

基础格式转换示例

const inputDate = "Jul 20, 2022 6:16:29 PM";
// 按输入格式解析字符串,避免浏览器兼容性问题
const parsedDate = moment(inputDate, "MMM DD, YYYY h:mm:ss A");
// 格式化为目标样式:星期缩写 月份缩写 日期 24小时制时间 GMT+偏移 年份
const formattedDate = parsedDate.format("ddd MMM DD HH:mm:ss [GMT]ZZ YYYY");
console.log(formattedDate); // 输出 Wed Jul 20 18:16:29 GMT+05:30 2022(时区取决于当前运行环境)

固定时区示例(如GMT+05:30)

若需要强制输出特定时区(比如印度标准时间),需搭配moment-timezone库:

// 确保已引入moment-timezone依赖
const formattedDateWithFixedTZ = parsedDate.tz("Asia/Kolkata").format("ddd MMM DD HH:mm:ss [GMT]ZZ YYYY");

方法二:使用原生JavaScript

无需依赖第三方库,通过Date对象和字符串拼接实现:

const inputDate = "Jul 20, 2022 6:16:29 PM";
const date = new Date(inputDate);

// 提取并格式化日期各部分
const weekday = date.toLocaleString('en-US', { weekday: 'short' });
const month = date.toLocaleString('en-US', { month: 'short' });
const day = String(date.getDate()).padStart(2, '0');
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
const seconds = String(date.getSeconds()).padStart(2, '0');

// 生成GMT时区偏移字符串
const tzOffset = date.getTimezoneOffset();
const absOffset = Math.abs(tzOffset);
const offsetSign = tzOffset < 0 ? '+' : '-';
const offsetHours = String(Math.floor(absOffset / 60)).padStart(2, '0');
const offsetMins = String(absOffset % 60).padStart(2, '0');
const gmtStr = `GMT${offsetSign}${offsetHours}:${offsetMins}`;

const year = date.getFullYear();

// 拼接最终格式
const formattedDate = `${weekday} ${month} ${day} ${hours}:${minutes}:${seconds} ${gmtStr} ${year}`;
console.log(formattedDate); // Wed Jul 20 18:16:29 GMT+05:30 2022

兼容性提示

部分旧浏览器对Date(inputDate)的解析可能存在差异,若需更稳妥的解析,可手动拆分输入字符串的月份、日期、年份、时间、AM/PM等部分,再构造Date对象。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 09:45:34