zoukankan      html  css  js  c++  java
  • js 计算倒计时

    第一个是我自己写的

    // t等于时间戳差  
      function changeTime(t) {
          let timeStr = ''
          let tmp = t/(24* 3600 * 1000)
          if (tmp > 1) timeStr = parseInt(tmp) + '天'
    
          if (tmp) {
            tmp = tmp.toString().split('.')[1]
    
            tmp = parseInt(tmp)
            tmp = t/(3600 * 1000)
    
            if (tmp>1) timeStr += parseInt(tmp) + '小时'
            tmp = tmp.toString().split('.')[1]
    
            tmp = parseInt(tmp)
            tmp = tmp/(1000 * 60)
            if (tmp>1) timeStr += parseInt(tmp) + '分钟'
    
            tmp = parseInt(tmp)
            tmp = tmp/1000
            if (tmp>1) timeStr += parseInt(tmp) + '秒'
    
          }
          return timeStr
        }
    

      计算结果不对, 因为余数取值错误 7÷3 = 2 ······1,如果用以上方法取余数,此时7÷3 = 2······33333,显然是不对的
    正确的方法后面补充。。。

    function getDjsTime (timestamp) {
      let t = timestamp - new Date().getTime()
      if (t<0) {
        return false
      }
      // 得到天数
      let days = parseInt(t / 1000 / 60 / 60 / 24)
      // 得到小时
      let hours = parseInt(t / 1000 / 60 / 60 % 24)
      // 得到分钟
      let minutes = parseInt(t / 1000 / 60 % 60)
      // 得到秒
      let seconds = parseInt(t / 1000 % 60)
    
      let timeStr = days + '天'
      timeStr += hours + '小时'
      timeStr += minutes + '分钟'
      timeStr += seconds + '秒'
    
      return timeStr
    }
    let d = '2020-10-1'
    djsTimeValue = getDjsTime()
    let inter = setInterval(_ => {
              let text = djsTime(d)
              if (text) {
                djsTimeValue = text
              } else {
                djsTimeValue = '超出投资时间'
                clearInterval(inter)
              }
            }, 1000)
        
    

      也可以写成setTimeout 方式

    function djsTime (timestamp) {
      let t = timestamp - new Date().getTime()
      if (t<0) {
        djsTimeValue = '投资时间结束'
      }
      // 得到天数
      let days = parseInt(t / 1000 / 60 / 60 / 24)
      // 得到小时
      let hours = parseInt(t / 1000 / 60 / 60 % 24)
      // 得到分钟
      let minutes = parseInt(t / 1000 / 60 % 60)
      // 得到秒
      let seconds = parseInt(t / 1000 % 60)
    
      let timeStr = days + ''
      timeStr += hours + '小时'
      timeStr += minutes + '分钟'
      timeStr += seconds + ''
    
      djsTimeValue = timeStr // 设置时间
      setTimeout(_ => {
         djsTime(timestamp)
      }, 1000)
    }
    djsTime (‘2020-10-1’) 直接调用即可

     还有一种维持djs函数独立的写法,我喜欢这种

    function djsTime (timestamp) {
      let t = timestamp - new Date().getTime()
      if (t<0) {
        return false
      }
      // 得到天数
      let days = parseInt(t / 1000 / 60 / 60 / 24)
      // 得到小时
      let hours = parseInt(t / 1000 / 60 / 60 % 24)
      // 得到分钟
      let minutes = parseInt(t / 1000 / 60 % 60)
      // 得到秒
      let seconds = parseInt(t / 1000 % 60)
    
      let timeStr = days + '天'
      timeStr += hours + '小时'
      timeStr += minutes + '分钟'
      timeStr += seconds + '秒'
    
      return timeStr
    }
    
    function test() {
          let timeStr = djsTimeFun()
          if (!timeStr) {
            djsTimeValue = timeStr // 设置时间
          } else {
            djsTimeValue = '超出投资时间' // 设置时间
          }
          setTimeout(_ => {
            test(timestamp)
          }, 1000)
    }
    test()
    

      

  • 相关阅读:
    oracle 递归查询 查询当前选中节点的所有子节点
    sql 常见操作
    【转】VS2008制作打包程序将安装路径写入注册表
    HTML字符集大全
    Oracle左连接,右连接
    Ubuntu下root用户和user用户如何进行相互切换
    【转】 vs2008 用文件部署生成的exe安装包
    C# 中out 和 ref 关键字的区别
    【转】vs2008安装部署程序时如何设置程序开机启动
    【转】vs2008安装部署工程制作教程
  • 原文地址:https://www.cnblogs.com/zph666/p/8875126.html
Copyright © 2011-2022 走看看