设置一个定时器,每秒计算一次。(在这之前清除一次防止重复调用setInterval()函数)

引入的时候需要全局引入js文件,并添加data-pjax,否则切换到别的页面就失效了


1
<span class="item-count" id="runtimeshow" data-publishdate="2020-09-30T16:00:00.000Z"></span>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/*
文件 :myUtils.js
时间 :2021-02-10 07:00:36
作者 :Karcyril
*/


/**添加网站运行时间 */

function myGetRuntime(d) {
const dateNow = new Date()
const datePost = new Date(d)
const dateDiff = dateNow.getTime() - datePost.getTime()
const minute = 1000 * 60
const hour = minute * 60
const day = hour * 24

let result = {}

const dayCount = Math.floor(dateDiff / day)
const hourCount = Math.floor(dateDiff % day / hour)
const minuteCount = Math.floor(dateDiff % day % hour / minute)
/**最后余下的为毫秒数 除以1000得到秒数 */
const secondCount = Math.floor(dateDiff % day % hour % minute / 1000)

result.day = dayCount
result.hour = hourCount
result.minute = minuteCount
result.second = secondCount

return result
}

var mTimer

(function () {
const $runtimeCount = document.getElementById('runtimeshow')
if ($runtimeCount) {
const publishDate = $runtimeCount.getAttribute('data-publishDate')
clearInterval(mTimer)
mTimer = setInterval(function () {
const runtimeDate = myGetRuntime(publishDate)
$runtimeCount.innerText = '本站已运行 ' + runtimeDate.day + '天' +
runtimeDate.hour + '小时' + runtimeDate.minute + '分钟' +
(runtimeDate.second < 10 ? ('0' + runtimeDate.second) : runtimeDate.second) +
'秒'
}, 1000)

}
})()