如何将格式为"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
相关产品推荐
相关产品推荐

