先写一个 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. Web实时更新客户端数据

    1        轮询方式实现客户端数据及时更新 在基于Web的即时通信.股票行情这样的系统中,需要客户端能够及时更新内容.由于B/S架构的特性(Http连接是无状态连接, 即服务器处理完客户的请求, ...

  2. 大数据学习(24)—— Spark入门

    在学Spark之前,我们再回顾一下MapReduce的知识,这对我们理解Spark大有裨益. 在大数据的技术分层中,Spark和MapReduce同为计算层的批处理技术,但是Spark比MapRedu ...

  3. rabbitmq消息处理-转载

    目录 1. 消息如何保障百分之百的投递成功? 1.1 方案一:消息落库,对消息状态进行打标 1.2 方案二:消息的延迟投递,做二次确认,回调检查 2. 幂等性 2.1 幂等性是什么? 2.2 消息端幂 ...

  4. pwnable.kr之brainf*ck

    pwnable.kr之brainf*ck 今天又是被难倒的一天Orz,个人感觉pwnable.kr上的题都比较剑走偏锋,仔细做过去,一定会有很大的收获. 不多说了,今天看的是第二关的第一道题:brai ...

  5. fiddler 之 返回数据乱码解决方法

    1.有时用fiddler抓包, 发现抓到的包, 发送数据和返回数据都是乱码, 怎么办?   直接上图  (这办法不是100%成功的) 方法一: 方法二:

  6. “入职一年,那个被高薪挖来的Android开发被劝退了。”

    其实,在很多小伙伴的想法中,是希望通过跳槽实现薪酬涨幅,可是跳槽不是冲动后决定,应该谨慎啊~ 01 我的学弟,最近向我吐槽,2020 年上半年入职一家公司,当时是高薪挖走的他,所谓钱到位,工作也是充满 ...

  7. 【LeetCode】155. 最小栈

    155. 最小栈 知识点:栈:单调 题目描述 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中. pop() -- 删 ...

  8. "百度杯"CTF比赛 十月场——EXEC

    "百度杯"CTF比赛 十月场--EXEC 进入网站页面 查看源码 发现了vim,可能是vim泄露,于是在url地址输入了http://21b854b211034489a4ee1cb ...

  9. JQuery常用属性操作,动画,事件绑定

    jQuery 的属性操作        html() 它可以设置和获取起始标签和结束标签中的内容. 跟 dom 属性 innerHTML 一样.        text() 它可以设置和获取起始标签和 ...

  10. JVM-初见

    目录 JVM的体系结构 类加载器 双亲委派机制 Native PC程序计数器 方法区(Method Area) 栈 堆 调优工具 常见JVM调优参数 常见垃圾回收算法 引用计数算法 复制算法 标记-清 ...