注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
- Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
- Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5。
/** 新计时器
--------------------
*** * 版本
*** ** JS程序版本:1.2
*** ** HTML&WIKI文本版本:1.0
--------------------
*** 使用说明
*** * .NewTimer[data-start=开始时间][data-end=结束时间][data-gmt=时区]:创建一个计时器
*** ** [data-start=开始时间]:必填,格式为"y/m/d h:m:s"
*** ** [data-gmt=时区]:默认为"+8"
*/
// 此处粘贴完整Timer.js代码
/** 新计时器
--------------------
*** * 版本
*** ** JS程序版本:1.2
*** ** HTML&WIKI文本版本:1.0
--------------------
*** 使用说明
*** * .NewTimer[data-start=开始时间][data-end=结束时间][data-gmt=时区]:创建一个计时器
*** ** [data-start=开始时间]:必填,设置计时器的开始时间,格式为"y/m/d h:m:s"
*** ** [data-end=结束时间]:设置计时器的结束时间,格式为"y/m/d h:m:s"
*** *** 如果没有设置结束时间,那么结束时间会被设置为开始时间
*** ** [data-gmt=时区]:设置计时器的时区,格式为"±gmt"
*** *** 如果没有设置时区,那么时区默认为"+8"
*** ** .NewTimer .displayTimer:创建计时器显示区域
*** ** .NewTimer .NotStart:设置计时器在还没开始时的显示格式
*** ** .NewTimer .StartButNotEnd:设置计时器在开始后但还没结束时的显示格式
*** ** .NewTimer .End:设置计时器在结束后的显示格式
*** 格式说明
*** * %syear:开始年
*** * %smonth:开始月(不补前导零)
*** * %sMonth:开始月(补前导零)
*** * %sdate:开始日(不补前导零)
*** * %sDate:开始日(补前导零)
*** * %shour:开始时(不补前导零)
*** * %sHour:开始时(补前导零)
*** * %smin:开始分(不补前导零)
*** * %sMin:开始分(补前导零)
*** * %ssec:开始秒(不补前导零)
*** * %sSec:开始秒(补前导零)
*** * %eyear:结束年
*** * %emonth:结束月(不补前导零)
*** * %eMonth:结束月(补前导零)
*** * %edate:结束日(不补前导零)
*** * %eDate:结束日(补前导零)
*** * %ehour:结束时(不补前导零)
*** * %eHour:结束时(补前导零)
*** * %emin:结束分(不补前导零)
*** * %eMin:结束分(补前导零)
*** * %esec:结束秒(不补前导零)
*** * %eSec:结束秒(补前导零)
*** * %nyear:现在年
*** * %nmonth:现在月(不补前导零)
*** * %nMonth:现在月(补前导零)
*** * %ndate:现在日(不补前导零)
*** * %nDate:现在日(补前导零)
*** * %nhour:现在时(不补前导零)
*** * %nHour:现在时(补前导零)
*** * %nmin:现在分(不补前导零)
*** * %nMin:现在分(补前导零)
*** * %nsec:现在秒(不补前导零)
*** * %nSec:现在秒(补前导零)
*** * ~sd:距离开始有几天
*** * ~sh:距离开始有几小时(在一天内)
*** * ~sH:距离开始有几小时(总计)
*** * ~sm:距离开始有几分钟(在一小时内)
*** * ~sM:距离开始有几分钟(总计)
*** * ~ss:距离开始有几秒钟(在一分钟内)
*** * ~sS:距离开始有几秒钟(总计)
*** * ~ed:距离结束有几天
*** * ~eh:距离结束有几小时(在一天内)
*** * ~eH:距离结束有几小时(总计)
*** * ~em:距离结束有几分钟(在一小时内)
*** * ~eM:距离结束有几分钟(总计)
*** * ~es:距离结束有几秒钟(在一分钟内)
*** * ~eS:距离结束有几秒钟(总计)
--------------------
*** 最后更新日期:2021.08.15
*** 制作者:丩卩夂忄
*/
NTFun={
"initialize":function(){
this.run()
setInterval(function(){NTFun.run()},1000)
},
"run":function(){
let timer=document.getElementsByClassName("NewTimer")
for(let i=0,ilen=timer.length;i<ilen;i++){
let now=new Date(new Date().getTime()+new Date().getTimezoneOffset()*60000+8*3600000)
let start=new Date(timer[i].dataset.start+" GMT"+(timer[i].dataset.gmt||"+8"))
let end=new Date((timer[i].dataset.end||timer[i].dataset.start)+" GMT"+(timer[i].dataset.gmt||"+8"))
let type
if(now<start){
type="NotStart"
}
else if(now>end){
type="End"
}
else{
type="StartButNotEnd"
}
let format=timer[i].getElementsByClassName(type)[0].innerHTML
timer[i].getElementsByClassName("displayTimer")[0].innerHTML=this.format(format,now,start,end)
}
},
"format":function(format,now,start,end){
let result=format
result=result.replace(/%syear/g,start.getFullYear())
result=result.replace(/%smonth/g,start.getMonth()+1)
result=result.replace(/%sMonth/g,this.leading0(start.getMonth()+1))
result=result.replace(/%sdate/g,start.getDate())
result=result.replace(/%sDate/g,this.leading0(start.getDate()))
result=result.replace(/%shour/g,start.getHours())
result=result.replace(/%sHour/g,this.leading0(start.getHours()))
result=result.replace(/%smin/g,start.getMinutes())
result=result.replace(/%sMin/g,this.leading0(start.getMinutes()))
result=result.replace(/%ssec/g,start.getSeconds())
result=result.replace(/%sSec/g,this.leading0(start.getSeconds()))
result=result.replace(/%eyear/g,end.getFullYear())
result=result.replace(/%emonth/g,end.getMonth()+1)
result=result.replace(/%eMonth/g,this.leading0(end.getMonth()+1))
result=result.replace(/%edate/g,end.getDate())
result=result.replace(/%eDate/g,this.leading0(end.getDate()))
result=result.replace(/%ehour/g,end.getHours())
result=result.replace(/%eHour/g,this.leading0(end.getHours()))
result=result.replace(/%emin/g,end.getMinutes())
result=result.replace(/%eMin/g,this.leading0(end.getMinutes()))
result=result.replace(/%esec/g,end.getSeconds())
result=result.replace(/%eSec/g,this.leading0(end.getSeconds()))
result=result.replace(/%nyear/g,now.getFullYear())
result=result.replace(/%nmonth/g,now.getMonth()+1)
result=result.replace(/%nMonth/g,this.leading0(now.getMonth()+1))
result=result.replace(/%ndate/g,now.getDate())
result=result.replace(/%nDate/g,this.leading0(now.getDate()))
result=result.replace(/%nhour/g,now.getHours())
result=result.replace(/%nHour/g,this.leading0(now.getHours()))
result=result.replace(/%nmin/g,now.getMinutes())
result=result.replace(/%nMin/g,this.leading0(now.getMinutes()))
result=result.replace(/%nsec/g,now.getSeconds())
result=result.replace(/%nSec/g,this.leading0(now.getSeconds()))
let n2s=Math.abs(now-start)
result=result.replace(/~sd/g,Math.floor(n2s/1000/60/60/24))
result=result.replace(/~sh/g,Math.floor(n2s/1000/60/60)%24)
result=result.replace(/~sH/g,Math.floor(n2s/1000/60/60))
result=result.replace(/~sm/g,Math.floor(n2s/1000/60)%60)
result=result.replace(/~sM/g,Math.floor(n2s/1000/60))
result=result.replace(/~ss/g,Math.floor(n2s/1000)%60)
result=result.replace(/~sS/g,Math.floor(n2s/1000))
let n2e=Math.abs(now-end)
result=result.replace(/~ed/g,Math.floor(n2e/1000/60/60/24))
result=result.replace(/~eh/g,Math.floor(n2e/1000/60/60)%24)
result=result.replace(/~eH/g,Math.floor(n2e/1000/60/60))
result=result.replace(/~em/g,Math.floor(n2e/1000/60)%60)
result=result.replace(/~eM/g,Math.floor(n2e/1000/60))
result=result.replace(/~es/g,Math.floor(n2e/1000)%60)
result=result.replace(/~eS/g,Math.floor(n2e/1000))
return result
},
"leading0":function(num){
num+=""
for(;num.length<2;){
num="0"+num
}
return num
},
}
try{
NTIsRun
}
catch(e){
NTIsRun=true
if(document.readyState=="complete"){
NTFun.initialize()
}
else{
window.addEventListener("load",function(){
NTFun.initialize()
})
}
}