new Date() 在微信分享中的坑

最近在项目中有一个抽奖的模块,由于需要设置抽奖开始时间,在模块首页就使用了计时器,也很简单,就是拿当前时间跟游戏开始时间作比较

    // 活动倒计时
    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 (中国标准时间)')

以上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值