最近在项目中有一个抽奖的模块,由于需要设置抽奖开始时间,在模块首页就使用了计时器,也很简单,就是拿当前时间跟游戏开始时间作比较
// 活动倒计时
timeId = setInterval(() => {
let startTime = new Date('2019-12-01 00:00:00')
let currentTime = new Date()
if (currentTime >= startTime) {
// 打开抽奖入口相关操作
clearInterval(timeId )
return // 抽奖入口相关操作
}
}, 500)
问题是,这个页面是在微信中打开的,我发现这个计时器的结束条件一直不能生效,就打印了一下开始时间和当前时间,
对,你没有看错,微信中打开之后,new Date()打印出来就是这个样子Date { format: function }
然后就一直不能进行比较,所以无法进入到计时器关闭的条件里面
后来请教了一下前辈, 前辈说 new Date() 要减0才能转化为数字,也就是毫秒数,这虽然很神奇,但是并没能解决我的问题,毕竟
后来经过几次测试研究,结论如下:
如果你在微信分享出去的页面中使用new Date()
并且需要设置具体的时间点,比如 new Date ('2019-12-01 00:00:00')
, 如果出现了神奇的bug, 那么你可以尝试这样来解决 new Date('Sun Dec 01 2019 00:00:00 GMT+0800 (中国标准时间)')
以上