new Date()的浏览器兼容性(NAN)问题

本文探讨了在不同浏览器中使用new Date()构造函数解析日期字符串的问题,特别是对于'-'分隔的日期格式。文章提供了正确的解决方案,即使用'/ '替代'-'进行日期字符串的格式转换,确保了跨浏览器的兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1

2

3

4

5

6

var timestart = '2010-05-04';

var timeend = '2015-04-01';

var time1 = (timestart).toString();

console.log(time1);

var time2 = (timeend).toString();

timestart = new Date(time1);

timeend = new Date(time2);

 

问题就在于 new Date(time1)这个构造函数无法正确的生成Date对象,console.log(time1)返回值为NaN.,问题在哪里呢?

正确的做法

1

2

3

4

var time1 = (timestart).toString();

var time2 = (timeend').toString();

timestart = new Date(Date.parse(time1.replace(/-/g,"/"))).getTime();

timeend = new Date(Date.parse(time2.replace(/-/g,"/"))).getTime();

主要的变化是对默认的日期格式进行了转换, 基于'/'格式的日期字符串,才是被各个浏览器所广泛支持的,‘-’连接的日期字符串,则是只在chrome下可以正常工作。

知识点总结

'2015-05-04'是无法被各个浏览器中,使用new Date(str)来正确生成日期对象的。 正确的用法是'2015/05/05'.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值