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

浙公网安备 33010602011771号