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

跨浏览器兼容的MM-DD-YYYY格式字符串转Date的正确方法

跨浏览器兼容的日期字符串转Date对象方法

问题根源是不同浏览器对非标准日期格式的解析逻辑不一致:Chrome可以识别MM-DD-YYYY格式,但Firefox仅严格支持ECMAScript规范定义的日期格式(如YYYY-MM-DD、RFC 2822格式),直接用new Date(strDate)会出现兼容性问题。

以下是两种可靠的兼容方案:

方案一:手动拆分参数构造Date对象

直接拆分日期字符串的年、月、日部分,传入Date构造函数(注意月份参数是从0开始计数,需要减1):

const strDate = '10-23-2022';
const [month, day, year] = strDate.split('-');
// 月份转成0-11的范围
const dateObj = new Date(year, month - 1, day);

这种方式完全规避浏览器解析差异,是兼容性最好的方案。

方案二:转换为标准格式后解析

通过正则替换将MM-DD-YYYY格式转为浏览器普遍支持的YYYY-MM-DD标准格式,再传入Date构造函数:

const strDate = '10-23-2022';
// 正则替换调整日期顺序
const formattedDate = strDate.replace(/^(\d{2})-(\d{2})-(\d{4})$/, '$3-$1-$2');
const dateObj = new Date(formattedDate);

注意事项

永远不要依赖浏览器对非标准日期字符串的解析行为,ECMAScript标准并未强制要求浏览器支持MM-DD-YYYY这类格式,不同厂商的实现差异会导致兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:51:02