追梦猪最近在做移动端项目 ,有个设置开始时间和结束时间,然后倒计时 这个活动还有几天。在安卓上能正确转换时间,但在iOS上不能显示,为NaN-NaN1-NaN Invalid Date,
就好比new Date('2017-09-18 14:58:32').getTime(); / /在ios上死活拿不到时间戳显示NaN
追梦猪查阅了相关的资料,后来发现:
原来是低版本的Safari解释new Date('2013-10-21')这个对象不一样,在IOS5中的Safari不支持这种写法,
而它支持的写法为new Date('2013','10','21'),这样写就能解决"Invalid Date"的问题
所以想要正确显示时间在iOS上,应该这么写
new Date("2010-03-15 10:30:00".replace(/-/g,'/')).getTime(); 解决了问题!!
然后附上24小时时间相差的倒计时代码
setInterval(()=>{
let data = new Date();
var u = navigator.userAgent, app = navigator.appVersion;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //g
var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
if (isAndroid) {
var datas = data.getFullYear()+'-'+(data.getMonth()+1)+'-'+(data.getDate()+1)+' '+'23:59:59';
}
if (isIOS) {
var cc = data.getFullYear()+'-'+(data.getMonth()+1)+'-'+(data.getDate()+1)+' '+'23:59:59';
var datas = cc.replace(/-/g,'/');
}
const endtime = new Date(datas);
const nowtime = new Date();
let leftTime = parseInt((endtime.getTime()-nowtime.getTime())/1000);
let d = parseInt(leftTime/(24*60*60));
let h = this.formate(parseInt(leftTime/(60*60)%24))
let m = this.formate(parseInt(leftTime/60%60))
let s = this.formate(parseInt(leftTime%60))
this.h = h
this.m = m
this.s = s
},1000)
JS判断用户手机是IOS还是Android
$(function () {
var u = navigator.userAgent, app = navigator.appVersion;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //g
var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
if (isAndroid) {
alert("安卓机!")
} if (isIOS) {
alert("苹果果机!")
}
});