移动端,纯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了~~~~~



  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值