js new Date('yyyy-MM-dd HH:mm:ss').getTime() 在IE、FF下为NaN的解决办法
今天在一个项目中要做一个倒计时的效果,自己js水平很一般,在网上找了段倒计时代码用了(如下):
function CountDown(jqueryObj) { var day_elem = jqueryObj.find(‘.day‘); var hour_elem = jqueryObj.find(‘.hour‘); var minute_elem = jqueryObj.find(‘.minute‘); var second_elem = jqueryObj.find(‘.second‘); var time = jqueryObj.data("endtime");var end_time = new Date(time).getTime(),//月份是实际月份-1 sys_second = (end_time - new Date().getTime()) / 1000; var timer = setInterval(function () { if (sys_second > 1) { sys_second -= 1; var day = Math.floor((sys_second / 3600) / 24); var hour = Math.floor((sys_second / 3600) % 24); var minute = Math.floor((sys_second / 60) % 60); var second = Math.floor(sys_second % 60); day_elem && $(day_elem).text(day);//计算天 $(hour_elem).text(hour < 10 ? "0" + hour : hour);//计算小时 $(minute_elem).text(minute < 10 ? "0" + minute : minute);//计算分钟 $(second_elem).text(second < 10 ? "0" + second : second);//计算秒杀 } else { var a_play = jqueryObj.find(‘.p_ljw a:first‘); if (time.length > 0) a_play.attr(‘href‘, ‘javascript:void(0)‘).addClass(‘a_not‘).text(‘已结束‘); clearInterval(timer); } }, 1000); }
因为本人一直以chrome为主浏览器使用,开发测试的时候看到的也是正常的,也没有想到浏览器兼容性的问题,待这个模块上线内测的时候发现了一个问题,var end_time = new Date(time).getTime();这行代码在firefox、ie下运行后 end_time 的值为 NaN,其中 time 的格式为"yyyy-MM-dd HH:mm:ss",google之后做了如下修改,运行正常,我称为解决方案一吧
解决方案一
function CountDown(jqueryObj) { var day_elem = jqueryObj.find(‘.day‘); var hour_elem = jqueryObj.find(‘.hour‘); var minute_elem = jqueryObj.find(‘.minute‘); var second_elem = jqueryObj.find(‘.second‘); var time = jqueryObj.data("endtime");
//修改----------- var datetimeArray = time.split(‘ ‘); var dateArray = datetimeArray[0].split(‘-‘); var timeArray = datetimeArray[1].split(‘:‘); var end_time = new Date(dateArray[0],(dateArray[1]-1),dateArray[2],timeArray[0],timeArray[1],timeArray[2]).getTime(),//月份是实际月份-1
//修改----------- sys_second = (end_time - new Date().getTime()) / 1000; var timer = setInterval(function () { if (sys_second > 1) { sys_second -= 1; var day = Math.floor((sys_second / 3600) / 24); var hour = Math.floor((sys_second / 3600) % 24); var minute = Math.floor((sys_second / 60) % 60); var second = Math.floor(sys_second % 60); day_elem && $(day_elem).text(day);//计算天 $(hour_elem).text(hour < 10 ? "0" + hour : hour);//计算小时 $(minute_elem).text(minute < 10 ? "0" + minute : minute);//计算分钟 $(second_elem).text(second < 10 ? "0" + second : second);//计算秒杀 } else { var a_play = jqueryObj.find(‘.p_ljw a:first‘); if (time.length > 0) a_play.attr(‘href‘, ‘javascript:void(0)‘).addClass(‘a_not‘).text(‘已结束‘); clearInterval(timer); } }, 1000); }
解决方案二
方案二就是改变日期的格式,将 time 的格式由 "yyyy-MM-dd HH:mm:ss" 改为 "yyyy/MM/dd HH:mm:ss"
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。