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()
    

      

  • 相关阅读:
    [经验栈]C#中几种定时器(timer)的区别
    [经验栈]C#与泰克示波器(Tektronix oscilloscope)MSO64通信操作
    [经验栈]C#监测IPv4v6网速及流量
    [技术栈]CRC校验原理及C#代码实现CRC16、CRC32计算FCS校验码
    [技术栈]C#利用Luhn算法(模10算法)对IMEI校验
    [经验栈]SQL语句逻辑运算符"AND"、"&&"兼容性
    Winform或WebForm使用ReportViewer报表设计,工具栏按钮英文显示的解决办法
    Dev 使用RibbonForm打开多标签窗体,主窗体的Text显示一个
    Devexpress如何获取RadioGroup选中项的值和显示值
    MySQL远程连接失败,MySQL远程连接出现Using password:YES错误的解决办法
  • 原文地址:https://www.cnblogs.com/zph666/p/8875126.html
Copyright © 2011-2022 走看看