移动端,纯JS手写的倒计时、日期等时间!!部分手机显示NAN问题?

1.首先我们要明确NAN是啥?为啥出现的这个?

NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。

2.既然知道NAN,那到底哪里会出现的这个?

仔细走一遍倒计时会发现new Date('2018-06-18 14:58:32')在IOS上是拿不到时间戳的,部分安卓手机也是NAN的。查自资料发现原来是低版本的Safari解释new Date('2013-10-21')这个对象不一样,在IOS5中的Safari不支持这种写法,而它支持的写法为new Date('2013','10','21'),这样写就能解决"Invalid Date"的问题。

3.解决方案:改变格式

将如下2018-07-28 23:59:59改成2018/07/28 23:59:59

  var time='2018-11-21 12:01:22';
  var day=new Date(time);
  //方案
  var day1=new Date(time1);
  var time1=time.replace(/-/g,"/");
    //方案拓展
  var day2=new Date(time1);
  var day3=eval("new Date("+ time.replace(/\D+/g,",")+")").getTime(); 

4.附上代码:

function GetRTime(){
         var EndTime= new Date('2018/07/08 09:00:00');
         var NowTime = new Date();
         var t =EndTime.getTime() - NowTime.getTime();
         var d=parseInt(t/ 1000 / 60 / 60 / 24);
             h=parseInt(t/ 1000 / 60 / 60 % 24);
             m=parseInt(t/ 1000 / 60 % 60);
             s=parseInt(t/ 1000 % 60);
             d <10 ? d = '0' +d :d =d;
             h <10 ? h = '0' +h :h =h;
             m <10 ? m = '0' +m :m =m;
             s <10 ? s = '0' +s :s =s;
             console.log(d+'天'+h+'时'+m+'分'+s+'秒');
         if(t < 0){
             clearTimeout(GetRTime);
             return false;
         }
         setTimeout(GetRTime,1000);
     }
GetRTime();
最后在移动设备运行一下,已经没有NAN了~~~~~



猜你喜欢

转载自blog.csdn.net/qq_28004379/article/details/80884425