js两时间戳的时间差设置倒计时

文章发布于2020年05月08日 20:46, 归类于: 前端

计算两时间之差,设置倒计时。

20200614更新:babel没有把padStart编译成低版本支持的语法,所以使用parseInt(n)<10?n+'0':n给小于10的数字添加‘0’。

/**
 *  两时间差倒计时
 * @param {*} t1 现在时 13位时间戳
 * @param {*} t2 将来时 13位时间戳
 * @return {Object}
 */
function timeDifferenceCountdown(left, right) {
  if (!right) return false
  let t1 = left ? (left.toString().length < 13 ? parseInt(left) * 1000 : left) : Date.parse(new Date())
  let t2 = right.toString().length < 13 ? parseInt(right) * 1000 : right
  let s = t2 - t1,
    isExpired = false // 是否过期

  if (s < 0) {
    isExpired = true
    s = Math.abs(s); // 绝对值
  }

  let s_day = 1000 * 60 * 60 * 24, // 一天的秒数
    s_hour = 1000 * 60 * 60, // 一个小时秒数
    s_minute = 1000 * 60, // 一个小时秒数
    s_second = 1000 // 一秒钟

  let day = parseInt(s / s_day)
  let hours = parseInt(s % s_day / s_hour)
  let minute = parseInt(s % s_day % s_hour / s_minute)
  let second = parseInt(s % s_day % s_hour % s_minute / s_second)


  function add0(n){
    return parseInt(n)<10?'0'+n:n
  }

  return {
    day,
    hours,
    minute,
    second,
    d: add0(day) , // day.toString().padStart(2, '0'),
    h: add0(hours), // hours.toString().padStart(2, '0'),
    m:add0(minute), // minute.toString().padStart(2, '0'),
    s: add0(second), // second.toString().padStart(2, '0'),
    isExpired
  }
}

使用:

<div id="demo"></div>
;(function(){
  let timer = null, countDown = null;
  timer = setInterval(() => {
    countDown = timeDifferenceCountdown(false, 1586192580)
    var demo = document.getElementById('demo')
    if(demo) {
      demo.innerHTML = `${countDown.isExpired===true?'已过去':'剩余'}  ${countDown.d}${countDown.h}${countDown.m}${countDown.s}秒`
    }
    console.log("countDown", countDown)
  }, 1000)
})()

转载请注明来源:《 js两时间戳的时间差设置倒计时》- rojerYong's Blog

文章链接:https://www.eoway.cn/article/1588941967.html

如果此文摘取了你的原创,请联系本站管理员,将对此文修改、删除处理。

--END--
上一篇:uniapp开发微信小程序时设置app.json不生效 下一篇:第一篇说说