今天又要用到动态显示当前时间,且要求可以切换24/12小时制, 记得很久前写过一个24小时制的,但一时没能找着, 于是又重新写了个,若有需要的朋友自行复制粘贴一份吧.
很简单的一个功能函数,实现方式不多言,用Date()对象获取到当前时间,然后用setTimeout每隔1秒获取最新的时间.
写的过程中碰到过一个小小的问题:
我最初的想法是用setInterval()每隔1秒获取最新时间,可是可以,但setInterval如果放在主函数内部,但导致内存泄漏(至于原因,
暂时还没想明白),后来在Rocky的提醒下用setTimeout()才解决内存泄漏问题,感谢Rocky同学:)
//显示时间 window.onload = function () { function novTimer(ev, time) { /* *ev:需要显示在的元素 *time:时间显示模式.若传入12则为12小时制,不传入则为24小时制 */ //年月日时分秒 var Y, M, D, W, H, I, S; //月日时分秒为单位时前面补零 function coverZero(i) { if (i < 10) { i = '0' + i; } return i; } (function () { var d = new Date(); var Week = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']; Y = coverZero(d.getFullYear()); M = coverZero(d.getMonth() + 1); D = coverZero(d.getDate()); W = Week[d.getDay()]; H = coverZero(d.getHours()); I = coverZero(d.getMinutes()); S = coverZero(d.getSeconds()); if (time && time == 12) { if (H <= 12) { H = '上午 ' + H; } else if (H > 12 && H < 24) { H = '下午 ' + coverZero(H); } else { H = '下午 00'; } } ev.innerHTML = Y + '年' + M + '月' + D + '日 ' + ' ' + W + ' ' + H + ':' + I + ':' + S; setTimeout(arguments.callee, 1000); })(); } }