Moment.js在Safari中返回Invalid Date,其他浏览器正常,求解决方案
解决思路
核心问题:Safari原生Date对象不支持
MM/DD/YYYY hh:mm:ss.SSS A这种带12小时制标识的格式自动解析,而moment默认会调用浏览器原生Date来解析未指定格式的字符串,导致跨浏览器表现不一致。最可靠的解决方案:明确指定解析格式
直接给moment传入第二个参数,指定输入日期的格式,让moment自行解析,不再依赖浏览器的原生解析能力,这样就能在所有浏览器中得到一致结果:moment('01/01/2023 11:44:00.000 AM', 'MM/DD/YYYY hh:mm:ss.SSS A').tz(time_zone, true).format('hh:mm:ss:SS A z')为什么替换空格为T没用?
你之前尝试的.replace(/ /g,"T")只能把格式改成01/01/2023T11:44:00.000 AM,但这个格式依然不符合ISO标准(ISO格式采用24小时制且不带AM/PM标识),Safari还是无法识别,所以没有效果。
内容的提问来源于stack exchange,提问作者Vladimir Štus
相关产品推荐
相关产品推荐

