vue实现时间倒计时功能

以下是“vue实现时间倒计时功能”的完整攻略,希望能对您有所帮助。

基本思路

Vue 实现时间倒计时功能的基本思路是:获取倒计时的起始时间和结束时间,然后通过 setInterval 函数计算时间差并更新视图上的倒计时剩余时间。

具体步骤

1.在Vue组件中定义起始时间和结束时间。

data() {
  return {
    startTime: new Date('2021-08-01 00:00:00').getTime(),
    endTime: new Date('2021-08-10 18:00:00').getTime(),
    restTime: {}
  }
},

2.计算时间差,更新剩余时间。

computed: {
  getTimeRemain() {
    let seconds = Math.floor((this.endTime - new Date().getTime()) / 1000)
    if (seconds <= 0) return false
    let rest = {}
    rest.hours = Math.floor(seconds / 3600)
    rest.minutes = Math.floor((seconds - rest.hours * 3600) / 60)
    rest.seconds = seconds - rest.hours * 3600 - rest.minutes * 60
    this.restTime = rest
    return true
  }
},

3.使用 setInterval 函数更新视图上的倒计时时间。

showTime() {
  setInterval(() => {
    this.getTimeRemain;
  }, 1000)
}

4.在模板中渲染出倒计时时间。

<p>{{ restTime.hours }}小时{{ restTime.minutes }}分钟{{ restTime.seconds }}秒</p>

示例说明

下面介绍两个示例来说明 Vue 实现时间倒计时功能。

示例1

假设现在是2021年8月1日,要实现一个倒计时,显示从现在到 2021年8月10日下午6点的倒计时时间。

<template>
  <div>
    <p v-if="getTimeRemain">
      {{ restTime.hours }}小时{{ restTime.minutes }}分钟{{ restTime.seconds }}秒
    </p>
    <p v-else>倒计时结束</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      startTime: new Date().getTime(),
      endTime: new Date('2021-08-10 18:00:00').getTime(),
      restTime: {}
    }
  },
  computed: {
    getTimeRemain() {
      let seconds = Math.floor((this.endTime - new Date().getTime()) / 1000)
      if (seconds <= 0) return false
      let rest = {}
      rest.hours = Math.floor(seconds / 3600)
      rest.minutes = Math.floor((seconds - rest.hours * 3600) / 60)
      rest.seconds = seconds - rest.hours * 3600 - rest.minutes * 60
      this.restTime = rest
      return true
    }
  },
  mounted() {
    setInterval(() => {
      this.getTimeRemain;
    }, 1000)
  }
}
</script>

示例2

假设现在是2021年8月1日,要实现一个倒计时,显示从现在到 2021年8月10日下午6点的剩余小时数。

<template>
  <div>
    <p v-if="getTimeRemain">
      剩余时间:{{ restTime.hours }}小时
    </p>
    <p v-else>倒计时结束</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      startTime: new Date().getTime(),
      endTime: new Date('2021-08-10 18:00:00').getTime(),
      restTime: {}
    }
  },
  computed: {
    getTimeRemain() {
      let seconds = Math.floor((this.endTime - new Date().getTime()) / 1000)
      if (seconds <= 0) return false
      let rest = {}
      rest.hours = Math.floor(seconds / 3600)
      this.restTime = rest
      return true
    }
  },
  mounted() {
    setInterval(() => {
      this.getTimeRemain;
    }, 1000)
  }
}
</script>

这两个示例都演示了如何通过Vue计算倒计时剩余时间,第一个示例展示了如何渲染出剩余时间的小时,分钟和秒数,第二个示例只展示了小时数。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue实现时间倒计时功能 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 如何使用HBuilderX把vue项目打包成apk

    下面是使用HBuilderX将Vue项目打包成APK的攻略: 确保环境配置正确 在使用HBuilderX打包Vue项目之前,需要先确保一些环境配置已经正确安装。具体需要安装的软件如下: JDK环境:移动端应用打包需要使用到Java环境,所以首先需要下载和安装JDK。下载JDK的网址为:https://www.oracle.com/technetwork/cn…

    Vue 2023年5月28日
    00
  • springboot短信验证码登录功能的实现

    下面是“springboot短信验证码登录功能的实现”的完整攻略: 1. 准备工作 在开始实现短信验证码登录功能之前,需要确保以下几点: 已经有可以发送短信的短信接口。 在服务端生成并存储验证码,并在发送成功后将其返回给客户端。 在这里,我们假设已经有了可以发送短信的短信接口,并提供了 /api/sms/send 接口用于发送验证码,发送成功后返回以下JSO…

    Vue 2023年5月28日
    00
  • 详解vue2.0 资源文件assets和static的区别

    来讲解一下“详解vue2.0 资源文件assets和static的区别”。 什么是资源文件 在前端开发中,想要像引用图片、字体、json数据等资源文件,需要将这些文件放入到项目中的某个目录下,然后才能够在代码中进行使用。 assets和static的区别 在Vue2.0中,我们可以把资源文件放置在两个目录下:assets和static。它们之间的区别在于: …

    Vue 2023年5月27日
    00
  • vue+element项目中过滤输入框特殊字符小结

    首先我们需要理解输入框中特殊字符的问题。通常情况下,我们需要对用户输入内容进行一定的限制和过滤,特别是输入框中的一些特殊字符,比如一些标点符号、空格等,可能会影响我们的业务逻辑。因此,在vue+element项目中,如何过滤输入框中的特殊字符,成为了我们需要解决的问题。 下面我们就来具体讲解一下如何实现。 步骤一、准备工作 首先,我们需要在项目中引入loda…

    Vue 2023年5月27日
    00
  • 基于vue2框架的机器人自动回复mini-project实例代码

    下面是针对“基于vue2框架的机器人自动回复mini-project实例代码”的详细攻略: 1. 环境搭建 首先,我们需要搭建好vue2的项目基础环境。可以通过如下命令创建一个vue2项目: vue create robot-reply-project 然后,进入项目目录cd robot-reply-project,安装一些需要的依赖: npm i axio…

    Vue 2023年5月28日
    00
  • vue router-link传参以及参数的使用实例

    下面我将为您详细讲解“Vue Router-Link 传参以及参数的使用”。 什么是 Vue Router-Link? Vue Router-Link 是 Vue.js 的一个路由组件,可以让你在 SPA(Single Page Application 单页应用程序)中实现页面跳转和参数传递。 如何使用 Vue Router-Link 传参? 使用 Vue …

    Vue 2023年5月29日
    00
  • vue实现文字横向无缝走马灯组件效果的实例代码

    下面是关于“vue实现文字横向无缝走马灯组件效果的实例代码”的完整攻略。 1. 概述 横向无缝走马灯是一种在web应用中经常使用的效果,可以用来展示滚动的新闻、广告等内容。本攻略将详细介绍如何使用Vue实现文字横向无缝走马灯组件效果。 2. 实现步骤 实现文字横向无缝走马灯组件效果的主要步骤如下: 2.1 确定需要展示的内容 在实现文字横向无缝走马灯组件效果…

    Vue 2023年5月27日
    00
  • 手写vite插件教程示例

    首先,我们需要明确几个概念: Vite:一款轻量、快速的 Web 开发构建工具。 插件(Plugin):能够扩展 Vite 的功能,增强开发体验。 下面是手写 Vite 插件的完整攻略: 1. 确定插件需求 在开始编写插件之前,我们要先明确需要实现的功能。可以查看 Vite 的官方插件文档,进行参考和借鉴。例如,我们想要编写一个 Vite 插件来自动添加时间…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部