位置:海鸟网 > IT > JavaScript >

JS实现动态显示当前时间(12/24小时制)

下面代码可以动态显示当前时间12/24小时制均可。

效果如下:

很简单的一个功能函数,用Date()对象获取到当前时间,然后用setTimeout每隔1秒获取最新的时间.
写的过程中碰到过一个小小的问题: 我最初的想法是用setInterval()每隔1秒获取最新时间,可是可以,但setInterval如果放在主函数内部,但导致内存泄漏(至于原因,暂时还没想明白),后来在Rocky的提醒下用setTimeout()才解决内存泄漏问题

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