js之封装(秒数)转化为时分秒倒计时组件 vue版本

Posted 鱼樱、、

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js之封装(秒数)转化为时分秒倒计时组件 vue版本相关的知识,希望对你有一定的参考价值。

 

效果如上图;

<!--
 * @Author: lhl
 * @Date: 2021-09-09 21:43:00
 * @LastEditors: lhl
 * @LastEditTime: 2021-09-09 22:21:55
 * @Description:  组件调用 <Test :remainTime="5000"></Test>
-->
<template>
  <span>{{
    hour
      ? hourString + \':\' + minuteString + \':\' + secondString
      : minuteString + \':\' + secondString
  }}</span>
</template>

<script>
export default {
  data() {
    return {
      hour: \'\',
      minute: \'\',
      second: \'\',
      timer: \'\'
    }
  },
  props: {
    remainTime: {
      // 倒计时间总秒数
      default: \'\'
    }
  },
  mounted() {
    if (this.remainTime > 0) {
      this.hour = Math.floor((this.remainTime / 3600) % 24)
      this.minute = Math.floor((this.remainTime / 60) % 60)
      this.second = Math.floor(this.remainTime % 60)
      this.countDowm()
    } else {
      this.minute = 0
      this.second = 0
    }
  },
  methods: {
    countDowm() {
      var self = this
      clearInterval(this.timer)
      this.timer = setInterval(function () {
        if (self.hour === 0) {
          if (self.minute !== 0 && self.second === 0) {
            self.second = 59
            self.minute -= 1
          } else if (self.minute === 0 && self.second === 0) {
            self.second = 0
            self.$emit(\'countDowmEnd\', true)
            clearInterval(self.timer)
          } else {
            self.second -= 1
          }
        } else {
          if (self.minute !== 0 && self.second === 0) {
            self.second = 59
            self.minute -= 1
          } else if (self.minute === 0 && self.second === 0) {
            self.hour -= 1
            self.minute = 59
            self.second = 59
          } else {
            self.second -= 1
          }
        }
      }, 1000)
    },
    formatNum(num) {
      return num < 10 ? \'0\' + num : \'\' + num
    }
  },
  computed: {
    hourString() {
      return this.formatNum(this.hour)
    },
    minuteString() {
      return this.formatNum(this.minute)
    },
    secondString() {
      return this.formatNum(this.second)
    }
  }
}
</script>

组件有不完善的地方请多多指出;多数场景自己已经测过了;

 

以上是关于js之封装(秒数)转化为时分秒倒计时组件 vue版本的主要内容,如果未能解决你的问题,请参考以下文章

js将秒转换为时分秒

js将秒转化为时分秒

将秒数转换为时分秒的形式java形式

php 将秒数转换为时间(年天小时分秒)

JAVA将时分秒格式的时间转化成秒数

PHP函数gmstrftime()将秒数转换成天时分秒