进入阅读页面二次需求处理

思路
时间乃是时间戳毫秒级别
进入阅读页面
    记录当前进入页面的时间
    如果是0:0:0 要重置时长
    如果不是凌晨,查看今天是否阅读过,如果阅读过要在之前的阅读时长存储一下
    
更新时长
   之前记录了(包含上次)进入页面的时间,在此基础上获取最新的时间并减去进入页面的开始时间得到时长,并在上次时长累加,接下来就是格式化一下,最重要的一点就是要更新最新的时间作为开始时间


离开阅读页面
  存储最新时长
  清除定时器

为完成的,只是进入了页面进行判断是否是凌晨,如果是在晚上11点进入页面,但是阅读到了凌晨1点,是无法重置时长的,要重置就要在开启定时器做判断,如果到达某一刻了,就重置为0,缓存也要重置
点击查看代码
    async startReading() {
      let elapsedTimeLocal = await $utils.getStorage('elapsedTime')
      const storedTime = parseInt(elapsedTimeLocal)
      const currentTime = new Date();

      if (currentTime.getHours() === 0 && currentTime.getMinutes() === 0 && currentTime.getSeconds() === 0) {
        this.elapsedTime = 0;
        await $utils.setStorage('elapsedTime', 0)
      } else {
        this.elapsedTime = storedTime || 0;
      }

      this.startTime = currentTime.getTime();
      this.timerReadId = setInterval(() => {
        this.updateElapsedTime()
      }, 1000);
    },
    async updateElapsedTime() {
      const currentTime = new Date();
      let currentTImeStamp = currentTime.getTime()
      if (currentTime.getHours() === 0 && currentTime.getMinutes() === 0 && currentTime.getSeconds() === 0) {
        this.elapsedTime = 0;
        await $utils.setStorage('elapsedTime', 0)
      } else {
        this.elapsedTime += (currentTImeStamp - this.startTime);
      }
      const formattedTime = $utils.durationFn(this.elapsedTime);
      this.durationText = formattedTime
      console.log("已用时间:" + formattedTime);
      this.startTime = currentTImeStamp;
    },
    onShow() {
      this.startReading()
    },
    async onHide() {
      await $utils.setStorage('elapsedTime', this.elapsedTime)
      clearInterval(this.timerReadId)
      this.timerReadId = null
    },
posted @   jialiangzai  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异

喜欢请打赏

扫描二维码打赏

微信打赏

点击右上角即可分享
微信分享提示