React Native中用mm/dd/yy格式创建Date对象报无效时间的原因
问题原因分析
- 非标准日期格式的解析无统一规范:
"mm/dd/yy"不属于ECMAScript强制要求支持的日期格式,React Native使用的Hermes引擎对这类格式的解析逻辑没有统一标准,不同环境下容易出现解析失败。 - 时区边界的解析冲突:当太平洋时区本地日期为09/02/23时,对应的UTC日期已进入09/03/23。此时解析
"09/03/23",引擎可能混淆本地时区与UTC的日期边界,错误判定该时间戳无效,返回"Invalid time"。 - 两位年份的解析歧义:字符串中的两位年份"23"在部分JS引擎中存在解析歧义,可能被识别为1923年而非2023年,结合时区场景后,年份错位会进一步引发日期解析逻辑冲突,触发错误。
如果需要稳定获取目标日期的午夜时间,建议手动拆分日期字符串,通过明确参数构造Date对象:
const [month, day, year] = "09/03/23".split("/"); const fullYear = 2000 + parseInt(year, 10); // Date构造函数的月份参数是0起始(0=1月,11=12月) const targetDate = new Date(fullYear, parseInt(month, 10) - 1, parseInt(day, 10));
内容的提问来源于stack exchange,提问作者Felipe Peña
相关产品推荐
相关产品推荐

