先写一个 js 文件,这个文件是工具类文件,需要单独开一个js

// 计算出时间戳的具体数据:比如将85400转化为 n天n时n分n秒
export function formateTimeStamp(timeStamp) {
var day;
var hour;
var min;
var seconds; day = parseInt(timeStamp / (24 * 60 * 60)) // 计算整数天数
var afterDay = timeStamp - day * 24 * 60 * 60 // 取得算出天数后剩余的秒数
hour = parseInt(afterDay / (60 * 60)) // 计算整数小时数
var afterHour = timeStamp - day * 24 * 60 * 60 - hour * 60 * 60 // 取得算出小时数后剩余的秒数
min = parseInt(afterHour / 60) // 计算整数分
seconds = parseInt(timeStamp - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60) // 取得算出分后剩余的秒数 if (day < 10) {
day = '0' + day;
} if (hour < 10) {
hour = '0' + hour
}; if (min < 10) {
min = '0' + min;
} if (seconds < 10) {
seconds = '0' + seconds;
} const restStamp = {
day: day,
hour: hour,
min: min,
seconds: seconds
}
return restStamp
}

  

template 部分,就一行代码

<p v-html="countTxt"></p> //注意: countTxt 这个属性是绑定倒计时时间的
 
 
date部分

//倒计时
      times: {},
      countTxt: '', // 最后结果,需要以 2021-05-17 14:20:30 的格式传进去
      startTime : '', //获取本地的时间
      endTime : '', //后端传进来的时间
 
//获取时间并转换成秒
getTime(time){
var date = new Date(time)
this.startTime = date.getTime() / 1000 ;
}, getTime1(time){
this.endTime = '' //将分钟转换成 天 - 小时 - 分
var day1 = parseInt(time/60/24);
var hour1 = parseInt(time/60%24);
var min1 = parseInt(time % 60) var date = new Date()
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
var minute = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
var second = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds(); day = day + day1
hour = hour + hour1 minute = minute + min1 if(minute > 60 ){
hour = hour + 1
minute = minute - 60
} if(hour > 24){
day = day + 1
hour = hour - 24
} var currentTime = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
var date2 = new Date(currentTime)
this.endTime = date2.getTime() / 1000 ; }, // 获得距离活动开始还剩余的时间
mistiming () { // var timeStamp = this.infos.activity.end_at - this.infos.activity.start_at;
// 本地时间转换成秒 - 减去传进来的时间转换成秒
var timeStamp = this.endTime - this.startTime ;
this.times = formateTimeStamp(timeStamp);
const str = `<span>${this.times.day}</span>天<span>${this.times.hour}</span>时<span>${this.times.min}</span>分<span>${this.times.seconds}</span>秒`
this.countTxt = str;
var TimeDown = setInterval(() => {
if (timeStamp > 0) {
timeStamp--;
const newTime = formateTimeStamp(timeStamp);
const str = `<span>${newTime.hour}</span>时<span>${newTime.min}</span>分<span>${newTime.seconds}</span>秒`
this.countTxt = str;
} else {
this.countTxt = '考试已结束'
this.$message.success("考试已结束,试卷自动提交。")
clearInterval(TimeDown);
}
}, 1000)
},

  

 
// 找个方法 或者 和后端请求回来的时间 放在一起
var date = new Date() // 时间戳为10位需*1000,时间戳为13位的话不需乘1000
var Y = date.getFullYear()
var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1)
var D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate() + '')
var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours())
var m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds(); this.froms.startTime = Y + '-' + M + '-' + D + ' ' + h + ':' + m + ':' + s; this.getTime( this.froms.startTime )
this.getTime1( this.form.time )
this.mistiming(); // 注: this.froms.startTime this.form.time 这俩个变量需要自己创建
 
 
 

vue 手写倒计时,样式需要自己调。( 亲测可用,就是没有样式 )的更多相关文章

  1. google vue开发调试插件,简便安装,亲测可用

    前言:开发vue项目,使用谷歌浏览器,不得不使用调试插件便于调试 插件地址如下: 链接:https://pan.baidu.com/s/159HqJMeFSF-w5z-tMi7drw 密码:ueez ...

  2. dataTable 加了竖向滚动条导致列头样式错位的问题 / 亲测可用,不好用你打我,用好了记得点推荐

    tab在没有显示之前,容器是没有高度宽度的,而dt在自动计算高度和宽度时是获取的外部容器的高度和宽度,当切换tab时,dt获取不到这个高度宽度,导致列头都挤在一起,是用下面代码解决此问题 $('a[d ...

  3. vue图片上传及java存储图片(亲测可用)

    1.前言 在使用elementui的upload组件时,我一直无法做到上传的图片和其他数据一起提交.单纯的上传文件,java的存储图片的方式也有局限性. 我知道的后端保存图片有两种方式:一种是直接存储 ...

  4. 阿里云服务器centos7,docker部署mysql+Redis+vue+springboot+Nginx+fastdfs,亲测可用

    一.购买云服务器 我是今年双十一期间在阿里云购买的服务器, 简单配置2核_4G_40G_3M,三年用了不到800块,不过当时我记得腾讯云更便宜,个人感觉,阿里的云服务器更加的稳定, 毕竟身经百战, 经 ...

  5. 基于vue手写tree插件那点事

    目录 iview提供的控件 手写控件 手写控件扩展 手写控件总结 # 加入战队 微信公众号 主题 Tree树形控件在前端开发中必不可少,对于数据的展示现在网站大都采取树形展示.因为大数据全部展示出来对 ...

  6. vue手写的轮播图片,解决已经修改data中的值,页面标签已绑定,但页面没效果

    1.效果 2.index.html <!DOCTYPE html> <html lang="en"> <link> <meta chars ...

  7. vue手写轮播

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. vue 手写组件 集合

    Num.1 :  链接 向右滑动, 显示删除按钮,  根据touchStart touchEnd 的 clientX 差距 > 30; 说明是向左滑动, 显示; 改变 e.currentTarg ...

  9. 基于Vue手写一个下拉刷新

    当然不乏有很多下拉刷新的插件可以直接使用,但是自定义程度不强,大部分都只能改改文字,很难满足设计师的创意,譬如淘宝和京东首页那种效果,就需要自己花心思倒腾了,最近刚好有这种需求,做完了稍微总结一下,具 ...

随机推荐

  1. (opencv01)读入图像

    (opencv01)Opencv之读入图像 读入图像  img = cv2.imread(filepath, flags) filepath : 要读入图片的完整路径 flags : 读入图片的标志 ...

  2. Table类

    Interpreter类, class Interpreter: public CC_INTERP_ONLY(CppInterpreter) NOT_CC_INTERP(TemplateInterpr ...

  3. ts踩坑笔记

    1.react中 this.el 报错 Property 'el' does not exist on type,添加el: any; 2.使用window.xx编译总是报错,用下面方法解决 let ...

  4. 8.8考试总结(NOIP模拟33)[Hunter·Defence·Connect]

    无法逃避的是自我,而无法挽回的是过去. 前言 还算可以,不过 T1 少 \(\bmod\) 了一下挂了 25pts,T2 没看清题面挂了 27pts. 下回注意吧.. T1 Hunter 解题思路 感 ...

  5. Server-Speaks-First 有点坑,Linkerd 2.10 中的协议检测和不透明端口

    协议检测(Protocol detection),顾名思义,允许 Linkerd 自动检测 TCP 连接中使用的协议. Linkerd 的设计原则之一是"just work",协议 ...

  6. RHCE_DAY01

    shell概述 shell是一个程序,它连接了用户和Linux内核,它可以解释用户输入的命令传递给内核,让用户可以更加方便的使用Linux系统 shell 本身并不是内核的一部分,它只是站在内核的基础 ...

  7. RHCSA_DAY07

    echo $PATH 用户账号管理 用户账号的作用:用户账号可用来登录系统,可以实现访问控制 用户模板目录:/etc/skel/ [root@localhost ~]# ls -a /etc/skel ...

  8. mybatis中Oracle及mysql插入时自动生成主键以及返回主键

    mysql的方式: 方式一: useGeneratedKeys="true" keyProperty="id" 方式二: <selectKey keyPr ...

  9. Linux命令(五)之service服务查找、启动/停止等相关操作

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  10. Go连接到Linux服务器进行操作-执行shell命令&&上传文件

    Go连接到Linux服务器进行操作 使用密码连接Linux服务器 package main import ( "fmt" "golang.org/x/crypto/ssh ...