今天又要用到動態顯示目前時間,且要求可以切換24/12小時制, 記得很久前寫過一個24小時制的,但一時沒能找著, 於是又重新寫了個,若有需要的朋友自行複製粘貼一份吧.
很簡單的一個功能函數,實現方式不多言,用Date()對象擷取到目前時間,然後用setTimeout每隔1秒擷取最新的時間.
寫的過程中碰到過一個小小的問題: 我最初的想法是用setInterval()每隔1秒擷取最新時間,可是可以,但setInterval如果放在主函數內部,但導致記憶體流失(至於原因,暫時還沒想明白),後來在Rocky的提醒下用setTimeout()才解決記憶體流失問題,感謝Rocky同學:)
核心代碼及示範
view sourceprint?01 function nowTime(ev,type){
02 /*
03 * ev:顯示時間的元素
04 * type:時間顯示模式.若傳入12則為12小時制,不傳入則為24小時制
05 */
06 //年月日時分秒
07 var Y,M,D,W,H,I,S;
08 //月日時分秒為單位時前面補零
09 function fillZero(v){
10 if(v<10){v=0+v;}
11 return v;
12 }
13 (function(){
14 var d=new Date();
15 var Week=[星期天,星期一,星期二,星期三,星期四,星期五,星期六];
16 Y=d.getFullYear();
17 M=fillZero(d.getMonth()+1);
18 D=fillZero(d.getDate());
19 W=Week[d.getDay()];
20 H=fillZero(d.getHours());
21 I=fillZero(d.getMinutes());
22 S=fillZero(d.getSeconds());
23 //12小時制顯示模式
24 if(type && type==12){
25 //若要顯示更多時間類型諸如中午淩晨可在下面添加判斷
26 if(H<=12){
27 H=上午 +H;
28 }else if(H>12 && H<24){
29 H-=12;
30 H=下午 +fillZero(H);
31 }else if(H==24){
32 H=下午 00;
33 }
34 }
35 ev.innerHTML=Y+年+M+月+D+日 + +W+ +H+:+I+:+S;
36 //每秒更新時間
37 setTimeout(arguments.callee,1000);
38 })();
39 }