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

如何将格式为"6 Dec, 2022"的字符串转为日期?JS实现方法

JavaScript中解析"6 Dec, 2022"格式字符串为日期的方法

方案1:直接使用Date构造函数

现代浏览器大多支持直接传入该格式字符串创建Date对象,代码简单:

const dateStr = "6 Dec, 2022";
const date = new Date(dateStr);
console.log(date); // 输出对应的Date实例

注意:旧版浏览器可能存在兼容性问题,若需兼容低版本环境不推荐此方法。

方案2:手动解析字符串(兼容性最优)

通过拆分字符串、映射月份缩写来构造Date对象,逻辑完全可控:

const dateStr = "6 Dec, 2022";
// 拆分日期各部分
const [day, monthAbbr, year] = dateStr.split(/[\s,]+/);
// 月份缩写转数字(JS中月份从0开始计数)
const monthMap = {
  Jan: 0, Feb: 1, Mar: 2, Apr: 3, May: 4, Jun: 5,
  Jul: 6, Aug: 7, Sep: 8, Oct: 9, Nov: 10, Dec: 11
};
// 创建Date对象
const date = new Date(Number(year), monthMap[monthAbbr], Number(day));
console.log(date);

这种方法不受浏览器差异影响,适合所有运行环境。

方案3:利用Intl.DateTimeFormat解析(多语言场景适用)

如果需要支持多语言的月份缩写,可借助Intl API自动完成映射:

function parseDate(dateStr) {
  const [day, monthAbbr, year] = dateStr.split(/[\s,]+/);
  const enMonthFormatter = new Intl.DateTimeFormat('en', { month: 'short' });
  let monthIndex = 0;
  // 遍历匹配月份缩写对应的索引
  for (; monthIndex < 12; monthIndex++) {
    const formattedMonth = enMonthFormatter.format(new Date(2022, monthIndex, 1));
    if (formattedMonth === monthAbbr) break;
  }
  return new Date(Number(year), monthIndex, Number(day));
}

const date = parseDate("6 Dec, 2022");
console.log(date);

该方法无需手动维护月份映射表,适合多语言日期解析场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 22:30:53