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

今天又要用到动态显示当前时间,且要求可以切换24/12小时制, 记得很久前写过一个24小时制的,但一时没能找着, 于是又重新写了个,若有需要的朋友自行复制粘贴一份吧. 很简单的一个功能函数,实现方式不多言,用Date()对象获取到当前时间,然后用setTimeout每隔1秒获取最新的时间. 写的过程中碰到过一个小小的问题: 我最初的想法是用setInterval()每隔1秒获取最新时间,可是可以,但setInterval如果放在主函数内部,但导致内存泄漏(至于原因,暂时还没想明白),后来在Rocky的提醒下用setTimeout()才解决内存泄漏问题,感谢Rocky同学:) 核心代码及演示查看样例演示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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/ 转载请注明出处.
posted @   Mr.Think  阅读(11418)  评论(2编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示