TypeScript/JavaScript中Date.parse未按预期返回NaN问题排查
问题解析:Date.parse("DM Test 2 (Primary)")返回异常时间戳的原因
核心原因分析
你遇到的问题是Chrome/Edge的V8引擎日期解析逻辑、系统设置或浏览器扩展共同作用的结果,具体拆解如下:
V8引擎的启发式解析规则
Chrome和Edge使用的V8引擎在处理Date.parse时,会尝试从字符串中提取能匹配日期格式的片段。当字符串包含2 (Primary)时,括号的存在会让引擎误判2为有效的日期组件(比如月份、年份或日),忽略其他无关文本;而移除括号后,2和周围的文本无法形成可识别的日期格式,因此返回NaN。系统区域设置的影响
操作系统的日期格式设置可能干扰浏览器的解析逻辑。如果你的系统采用了带括号的日期格式(比如将星期/月份缩写放在括号中),浏览器会错误地把(Primary)匹配为格式的一部分,进而触发对2的解析。浏览器扩展的干扰
部分脚本注入、隐私保护类扩展可能修改了原生的Date.parse方法或JS运行环境,导致解析行为异常。在线fiddle运行在隔离环境中,不受扩展影响,所以无法复现该问题。旧版本浏览器的bug
若你使用的是较旧版本的Chrome/Edge,可能遇到了V8引擎已修复的日期解析bug。在线fiddle通常使用最新版浏览器,因此不会出现该问题。
验证与解决方法
- 切换到浏览器隐身模式运行代码,排除扩展干扰;
- 将系统日期格式改为标准格式(如
YYYY-MM-DD)后重试; - 更新Chrome/Edge到最新版本,查看问题是否消失;
- 在控制台执行
new Date(981003600000),查看对应具体日期,分析2与该日期的关联(比如是否对应2月)。
内容的提问来源于stack exchange,提问作者rory.ap
相关产品推荐
相关产品推荐

