前两天,在写一个手机端活动的时候,活动页显示需要根据后端返回的时间段来展示。当时自信满满的写了下面这段代码
countTime(startTime, endTime){
let nowDate = new Date(),
startDate = new Date(startTime),
endDate = new Date(endTime)
if(nowDate >= startDate && nowDate <= endDate){
return true
}
return false
}
在浏览器及微信开发者工具中,测试的时候相当丝滑 顺畅
一度以为写的代码百分百完美了,发不到环境之后才发现是自己想的太多了~~
安卓->显示正常
浏览器->显示正常
ios->直接不展示
无语,手机没问题、浏览器没问题、那就只能是代码的问题。后来一行一行的测试,才发现ios这个大坑,它对于new Date()是有格式要求,只支持xxxx/xx/xx格式。(极度大无语事件)后端返回的时间是yy-mm-dd 类型的,问题找到了。
我们使用正则表达式将 ‘/’ 替换成 ‘-’,获取时间判断
下面是修改后的代码
countTime(startTime, endTime){
let nowDate = new Date().getTime(),
startDate = new Date(startTime.replace(/-/g, '/')).getTime(),
endDate = new Date(endTime.replace(/-/g, '/')).getTime()
if(nowDate >= startDate && nowDate <= endDate){
return true
}
return false
},
发布之后,发现完美解决~