new Date在浏览器中兼容的问题

luoyjx · 2015-06-23 19:34 · 1139次阅读

起因

在开发时,只在chrome下开发,所以,在其他浏览器上的效果并未发现。 结果在ff和IE下的new Date(str)时,出现了NaN。

比如如下代码:

var timestart = '2010-05-04';
var timeend = '2015-06-23';
var time1 = (timestart+' 00:00:00').toString();
var time2 = (timeend+' 23:59:59').toString();
timestart = new Date(time1);
timeend = new Date(time2);

尝试

  • IE下的执行情况:

    结果:Invalid Date

  • firefox下的执行情况:

    结果:Invalid Date

  • chrome下的执行情况:

    结果:正常

正确的姿势

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

var time1 = (timestart+' 00:00:00').toString();
var time2 = (timeend+' 23:59:59').toString();
timestart = new Date(Date.parse(str.replace(/-/g,"/"))).getTime();
timeend = new Date(Date.parse(str.replace(/-/g,"/"))).getTime();

结论

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

收藏

暂无评论

登录后可以进行评论。没有账号?马上注册