vue2一个计时器的功能

<div class="timeContainer">{{ time }}</div> 

data:
      hour: 0,
      minute: 0,
      second: 0,
      initTime: Date.now(),
      timeTotal:0,
      time: "00:00:00",



//记录当前时间至session并计算出时间差值也就是计时的时间
    Initime() {
      if(sessionStorage.getItem('InitDate')==null){
      sessionStorage.setItem('InitDate',Date.now())
    }
       this.timeTotal=Date.now()-sessionStorage.getItem('InitDate');
       const baseTime=Math.round(this.timeTotal/1000);
       const second=baseTime%60;
       this.second=second;
       const minute=Math.floor((baseTime/60)%60);
       this.minute=minute;
       const hour=Math.floor((baseTime/(60*60))%60);
       this.hour=hour;
    },
    //计时器计时开始
    start() {
     this.Initime();
      this.flag = setInterval(() => {
        this.second = this.second + 1;
        if (this.second >= 60) {
          this.second = 0;
          this.minute = this.minute + 1;
        }

        if (this.minute >= 60) {
          this.minute = 0;
          this.hour = this.hour + 1;
        }
        this.time =
          this.complZero(this.hour) +
          ":" +
          this.complZero(this.minute) +
          ":" +
          this.complZero(this.second);
      }, 1000);
    },
    //格式化计时时间00:00:00
    complZero(n) {
      return n < 10 ? "0" + n : "" + n;
    },

一、起因

创建这个计时器功能的起因是我想在自己项目网站中实现一个记录自己学习时间的一个正计时器功能并且不会随着点击其他页面而时间重置,但网上element-ui官方组件只有倒计时功能组件,遂在网上查找相关代码,找到了计时器相关代码模块,但会随着页面的刷新或者点击网站内其他标签页时间重置,这样就达不到学习计时这样一个功能,遂又在原有计时器功能上面作了一下改造;具体就是InitTime方法中的代码

二、思路

时间计时

要想实现刷新页面或者点击其他标签页时间不重置这样一个功能,我们可以利用sessionStorage来存储我们进入网站的时间戳,每次刷新页面时判断sessionStorage是否有这个时间戳如果有则不对初试时间进行存储如果没有则存储时间戳,然后每次刷新页面时记录下当前时间戳与sessionStorage中的初试时间作一个减法可得到学习的时间,但这是的时间是不规范的是毫秒级别的 所以我们再对其进行一个格式化得到 小时(hour)、分钟(minute)、秒(second)接着修改start中他人的代码 将上述变量添加其中即可 

相关推荐

  1. vue2一个计时器功能

    2024-07-14 17:06:03       24 阅读
  2. vue2-ace-editor实现一个简单代码编辑器

    2024-07-14 17:06:03       48 阅读
  3. vue2实现面包屑功能

    2024-07-14 17:06:03       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 17:06:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 17:06:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 17:06:03       58 阅读
  4. Python语言-面向对象

    2024-07-14 17:06:03       69 阅读

热门阅读

  1. Python bisect的使用

    2024-07-14 17:06:03       25 阅读
  2. `nmap`模块是一个用于与Nmap安全扫描器交互的库

    2024-07-14 17:06:03       18 阅读
  3. 【EasyExcel】根据单元格内容自动调整列宽

    2024-07-14 17:06:03       18 阅读
  4. Redis 底层数据结构

    2024-07-14 17:06:03       21 阅读
  5. C# Static的一些理解

    2024-07-14 17:06:03       17 阅读
  6. 多线程编程中的条件变量及其优化

    2024-07-14 17:06:03       15 阅读
  7. STM32F103控制0.96寸OLED显示

    2024-07-14 17:06:03       15 阅读
  8. GESP C++ 三级真题(2023年9月)T1 ⼩ 杨储蓄

    2024-07-14 17:06:03       14 阅读
  9. 2024年交安安全员考试题库及答案

    2024-07-14 17:06:03       19 阅读
  10. 2024年高校辅导员考试题库及答案

    2024-07-14 17:06:03       25 阅读
  11. VMM、VMI、VIM的简介

    2024-07-14 17:06:03       16 阅读