先看问题: 下边这段代码是 通过接口返回时间 ‘‘2020-10-05 10:29:33’ 转换成时间戳 然后跟当前时间的时间戳进行比较来控制按钮的显示
startTimeStr = data[0].startTime endTimeStr = data[0].endTime startTime = new Date(startTimeStr).getTime(); endTime = new Date(endTimeStr).getTime(); if (nowDate < startTime) { $('.btnContainer .btnOne').show(); $('.btnContainer .btnTwo').hide(); $('.btnContainer .btnThree').hide(); $('.btnContainer .btnOne').html(data[0].startTime + ' 开启') } else if (nowDate > endTime || data[0].sellOut) { $('.btnContainer .btnOne').hide(); $('.btnContainer .btnTwo').hide(); $('.btnContainer .btnThree').show(); } else { $('.btnContainer .btnOne').hide(); $('.btnContainer .btnTwo').show(); $('.btnContainer .btnThree').hide(); }问题是 Android显示正常,但是ios会出现问题,打了很多debugger 并且很多文章最后发现 iOS对时间格式‘‘2020-10-05 10:29:33’不兼容,ios的识别格式是‘2020/10/05 10:29:33’。哭了 解决:
//当前时间 let nowDate = new Date().getTime(); //活动时间 let startTimeStr, endTimeStr, startTime, endTime //处理ios时间格式 let judge = judgePhone(); if (judge == 'S') { startTimeStr = data[0].startTime.replace(/\-/g, "/") endTimeStr = data[0].endTime.replace(/\-/g, "/") } else { startTimeStr = data[0].startTime endTimeStr = data[0].endTime } startTime = new Date(startTimeStr).getTime(); endTime = new Date(endTimeStr).getTime(); if (nowDate < startTime) { $('.btnContainer .btnOne').show(); $('.btnContainer .btnTwo').hide(); $('.btnContainer .btnThree').hide(); $('.btnContainer .btnOne').html(data[0].startTime + ' 开启') } else if (nowDate > endTime || data[0].sellOut) { $('.btnContainer .btnOne').hide(); $('.btnContainer .btnTwo').hide(); $('.btnContainer .btnThree').show(); } else { $('.btnContainer .btnOne').hide(); $('.btnContainer .btnTwo').show(); $('.btnContainer .btnThree').hide(); } function judgePhone() { var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); if (isAndroid) { return 'A'; } if (isIOS) { return 'S'; } }