今天又要用到動態顯示目前時間,且要求可以切換24/12小時制, 記得很久前寫過一個24小時制的,但一時沒能找著, 於是又重新寫了個,若有需要的朋友自行複製粘貼一份吧.
很簡單的一個功能函數,實現方式不多言,用Date()對象擷取到目前時間,然後用setTimeout每隔1秒擷取最新的時間.
寫的過程中碰到過一個小小的問題: 我最初的想法是用setInterval()每隔1秒擷取最新時間,可是可以,但setInterval如果放在主函數內部,但導致記憶體流失(至於原因,暫時還沒想明白),後來在Rocky的提醒下用setTimeout()才解決記憶體流失問題,感謝Rocky同學:)
核心代碼及示範查看範例示範
function nowTime(ev,type){/* * ev:顯示時間的元素 * type:時間顯示模式.若傳入12則為12小時制,不傳入則為24小時制 *///年月日時分秒var Y,M,D,W,H,I,S;//月日時分秒為單位時前面補零function fillZero(v){if(v<10){v='0'+v;}return v;}(function(){var d=new Date();var Week=['星期天','星期一','星期二','星期三','星期四','星期五','星期六']Y=d.getFullYear();M=fillZero(d.getMonth()+1);D=fillZero(d.getDate());W=Week[d.getDay()];H=fillZero(d.getHours());I=fillZero(d.getMinutes());S=fillZero(d.getSeconds());//12小時制顯示模式if(type && type==12){//若要顯示更多時間類型諸如中午淩晨可在下面添加判斷if(H<=12){H='上午 '+H;}else if(H>12 && H<24){H-=12;H='下午 '+fillZero(H);}else if(H==24){H='下午 00';}}ev.innerHTML=Y+'年'+M+'月'+D+'日 '+' '+W+' '+H+':'+I+':'+S;//每秒更新時間setTimeout(arguments.callee,1000);})();}
原文發佈於Mr.Think的部落格: http://mrthink.net/js-nowtime-12or24mode/ 轉載請註明出處.