前文:最近在开发微信小程序有个需求最订单倒计时 Ok 撸代码:
countDown(key, endTimeList, that,) {//倒计时函数
/**
* key 是setData 的属性名字
* endTimeList 是结束时间列表
*/
// 获取当前时间,同时得到活动结束时间数组
let newTime = new Date().getTime();
let countDownArr = [];
// 对结束时间进行处理渲染到页面
endTimeList.forEach(o => {
let endTime = new Date(o).getTime();
let obj = null;
// 如果活动未结束,对时间进行处理
if (endTime - newTime > 0) {
let time = (endTime - newTime) / 1000;
// 获取天、时、分、秒
let day = parseInt(time / (60 * 60 * 24));
let hou = parseInt(time % (60 * 60 * 24) / 3600);
let min = parseInt(time % (60 * 60 * 24) % 3600 / 60);
let sec = parseInt(time % (60 * 60 * 24) % 3600 % 60);
obj =this.timeFormat(day)+':'+this.timeFormat(hou)+':'+this.timeFormat(min)+':'+this.timeFormat(sec)
} else {//活动已结束,全部设置为'00'
obj = "00:00:00"
}
countDownArr.push(obj);
})
// 渲染,然后每隔一秒执行一次倒计时函数
that.setData({ [key]: countDownArr });
// 函数内调用自身,,重复使用setTimeout 就每隔一秒调用一次了
that.data.toTime= setTimeout(() => { this.countDown(key, endTimeList, that) }, 1000);
}
ok没问题啊 我安卓,ios,开发者工具调试都没有问题 好的提交一波。
几天过后产品来了 也开启我的奇幻之旅。。。。
主题进入主题 产品手机倒计时会多8个小时,但是我的并不会,都是用的苹果手机 奇怪了 于是翻阅文档 文档中都只是说云函数 时区问题引起的 但是我并没有用啊 再问度娘:‘new Date()’为什么多8小时 得出都只是说 ios下 时间中不能带‘-’** 不然会NAN 也不是我的问题啊**
记住这一点!! 也是他误导了我 我的时间能出来 只是多8小时 就忽略了时间格式的问题 思索再三 我又打印了哈 后台返回的时间格式 结果是带
‘_’
不是说是是NaN么 我再将格式装换了哈 在求毫秒值 奇迹发生了
打印说明 111为未转换时间格式前 222为转换后
打印说明 111为未转换时间格式前 222为转换后
细心的同学会发现 在我的苹果6下 转换前后获取时间是一样的 但是在苹果8在相差8小时
我草这么神奇 我得记录哈 新萌开发记录 不知是否正确 望大佬指点