我们平常浏览网页的时候,经常见到“距游戏公测1天2小时3分钟4秒”这样的倒计时器。像切图网qietu.com经常就遇到要做倒计时的效果,干脆记录下来,免得重复造轮子。

下面两个 demo 将分别用纯 JavaScript 、基于 Vue.js 的 JavaScript 实现。代码中可能包含部分 ES6 语法,但相信很容易理解。

JavaScript
创建一个 countdown 方法,用于计算并在控制台打印距目标时间的日、时、分、秒数,每隔一秒递归执行一次。

msec 是当前时间距目标时间的毫秒数,由时间戳相减得到,我们将以这个数为基础计算。我们都知道1天等于24小时,1小时等于60分钟,1分钟等于60秒,1秒等于1000毫秒。所以,msec / 1000 / 60 / 60 / 24 保留整数就是天数。如果换用 % 取余数,再保留整数后得到的就是小时数。以此类推就能算出其他所有数。

function countdown () {
// 目标日期时间戳
const end = Date.parse(new Date(‘2017-12-01’))
// 当前时间戳
const now = Date.parse(new Date())
// 相差的毫秒数
const msec = end – now
// 计算时分秒数
let day = parseInt(msec / 1000 / 60 / 60 / 24)
let hr = parseInt(msec / 1000 / 60 / 60 % 24)
let min = parseInt(msec / 1000 / 60 % 60)
let sec = parseInt(msec / 1000 % 60)
// 个位数前补零
hr = hr > 9 ? hr : ‘0’ + hr
min = min > 9 ? min : ‘0’ + min
sec = sec > 9 ? sec : ‘0’ + sec
// 控制台打印
console.log(`${day}天 ${hr}小时 ${min}分钟 ${sec}秒`)
// 一秒后递归
setTimeout(function () {
countdown()
}, 1000)
}
控制台打印结果:

27天 07小时 49分钟 10秒
27天 07小时 49分钟 09秒
27天 07小时 49分钟 08秒

Vue.js
如果单纯使用 JavaScript ,我们需要在每次计算后手动更新 DOM 元素(将数据显示给用户),既不方便又难以维护。实际项目中更多的是配合前端框架,将计算结果实时渲染到页面上。

页面结构中的数据来自 Vue 实例的 data 对象。

{{ `${day}天 ${hr}小时 ${min}分钟 ${sec}分钟` }}

mounted 是 Vue 的生命周期方法,可以理解为在页面加载完毕后执行 countdown 方法。countdown 方法每隔一秒会执行一次,并将计算结果分别赋予变量 day、hr、min、sec,同时改变的还有页面上显示的内容。

new Vue({
el: ‘#app’,
data: function () {
return {
day: 0, hr: 0, min: 0, sec: 0
}
},
mounted: function () {
this.countdown()
},
methods: {
countdown: function () {
const end = Date.parse(new Date(‘2017-12-01’))
const now = Date.parse(new Date())
const msec = end – now
let day = parseInt(msec / 1000 / 60 / 60 / 24)
let hr = parseInt(msec / 1000 / 60 / 60 % 24)
let min = parseInt(msec / 1000 / 60 % 60)
let sec = parseInt(msec / 1000 % 60)
this.day = day
this.hr = hr > 9 ? hr : ‘0’ + hr
this.min = min > 9 ? min : ‘0’ + min
this.sec = sec > 9 ? sec : ‘0’ + sec
const that = this
setTimeout(function () {
that.countdown()
}, 1000)
}
}
})
相关环境:Windows 7 x64 / Vue.js 2.4.4

js中同时得到整数商及余数_js和vue实现时分秒倒计时的方法相关推荐

  1. js中同时得到整数商及余数_js取整数、取余数的方法

    1 1.丢弃小数部分,保留整数部分parseInt(5/2)2.向上取整,有小数就整数部分加1 Math.ceil(5/2)3,四舍五入.Math.round(5/2)4,向下取整 Math.floo ...

  2. js中同时得到整数商及余数_苏教版小学数学二年级下册1.1有余数的除法讲解

    | 政策 • 信息 • 知识 • 方法 • 生活 • 教师 • 学生 • 家长 | 点击题目下方蓝字一键关注 江苏微教育 知识点总结 1.有余数的除法的意义 在平均分一些物体时,有时会有剩余. 2.余 ...

  3. 题目11-2:给定被除数和除数,求整数商及余数。

    题目转载:http://python.wzms.com/s/1/21 题目描述: 给定被除数和除数,求整数商及余数. 输入格式: 一行,包含两个整数,依次为被除数和除数(除数非零),中间用一个空格隔开 ...

  4. java每日一练——第四天:输入两个整数num1和num2,请你设计一个程序,计算并输出它们的和、差、积、整数商及余数。

    文章目录 题目描述 问题分析 代码实现 运行结果 网上参考 结语 题目描述 输入两个整数num1和num2,请你设计一个程序,计算并输出它们的和.差.积.整数商及余数. 输入 输入只有两个正整数num ...

  5. Python Level 4 程序题:商和余数,给定被除数和除数,求整数商及余数

    [创作平台] 肥猴编程 [问题描述] 给定被除数和除数,求整数商及余数 [输入格式] 一行,包含两个整数,依次为被除数和除数(除数非零),中间用一个空格隔开 [输出格式] 一行,包含两个整数,依次为整 ...

  6. 题目11:给定被除数和除数,求整数商及余数。

    题目转载:http://python.wzms.com/s/1/21 题目描述: 给定被除数和除数,求整数商及余数. 输入格式: 一行,包含两个整数,依次为被除数和除数(除数非零),中间用一个空格隔开 ...

  7. 时分秒倒计时的js实现

    时分秒倒计时的js实现 2016年06月01日 11:51:45 阅读数:6587 时分秒倒计时的js实现,如图: 闲话少说,直接上代码. html代码: <div id="timer ...

  8. Excel中实现时间相减,得到间隔时间(年月日时分秒)

    一.年月日之差 表中有开始日期和结束日期,我们在D3单元格中输入"=C3-B3" 于是,得到下面的结果 很显然,结果并不是我们想要的.说明这种方法不行,为了得到两个日期之间的时间间 ...

  9. js倒计时天时分秒php,js实现时分秒倒计时

    本文实例为大家分享了js实现时分秒倒计时的具体代码,供大家参考,具体内容如下 js时分秒毫秒倒计时 //js部分 function countTime(value) { //获取当前时间 var da ...

最新文章

  1. pLSA概率潜在语义分析
  2. java多线程编程--基础篇
  3. linux 协议栈 位置,[置顶] Linux协议栈代码阅读笔记(一)
  4. eclipse下查看maven下载的源码中文乱码问题
  5. Coursera机器学习课程代码作业-Python版本
  6. [BZOJ 3894]文理分科(最小割)
  7. 【微信小程序】目前最全的《Java面试题及解析》
  8. 做简单的android 软件推荐,Android_适用于Android开发的简单聊天软件,适用于android 开发。是一个简 - phpStudy...
  9. 2021-11-06深度学习
  10. cloudstack+ceph中解决ceph单点问题
  11. canvas笔记-在canvas中使用其他HTML元素
  12. 动态参数 maven_Spring Security 动态url权限控制(三)
  13. android res目录下存放图片文件夹 i m h xh xxh
  14. CTF杂项(一)——编码学基础
  15. 老婆生成器 yyds
  16. XML文档类型定义---XML Schema结构
  17. OSChina 周四乱弹 —— 八字欠备,五行缺胎
  18. MySQL自动化巡检报告-v1.0
  19. 【office 2007~office 2019】Excel日期选择控件插件安装
  20. 75 ----平面二次曲线方程的化简: 移轴变换、转轴变换、伸缩变换

热门文章

  1. 基于Xml 的IOC 容器-获得配置路径
  2. RocketMQ消息的事务架构设计
  3. JDK7和JDK9流中异常的处理
  4. try_catch_异常处理的第二种方式,自己处理异常
  5. 将 C++ 中的 goto 语句转化为非 goto 语句
  6. JavaScript正则表达式语法与示例
  7. 我犯的错误--关于数据库类型不对
  8. Java基础 — 异常
  9. InstallShield Build Error -1014: Cannot rename directory PATH to PATH\folder.Bak.
  10. Java集合--TreeMap