第一个是我自己写的
// 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()