JavaScript Date学习实例:获取3分钟前的时间“hhmmss”格式

上一篇博客分享了Date对象的理论知识,今天正好看到一段相关的代码,可以继续深化,通过实例加强复习Date

071741353678145.jpg

题目:获取3分钟前的时间,并且显示格式是hhmmss

以下是看到的代码
var time=new Date().getTime()-3*60*1000;
                var d=new Date();
                d.setTime(time);
                 var curHours = d.getHours()>=10?d.getHours():"0"+d.getHours();
                 var curMinutes = d.getMinutes()>=10?d.getMinutes():"0"+d.getMinutes();
                 var curSeconds = d.getSeconds()>=10?d.getSeconds():"0"+d.getSeconds();
分析:

1.Date类型本身就可以和整数进行计算,不需要使用getTime(),new Date()
2.Date函数可以直接传整数


下面分享两种比较高效的算法:

第一种思想:

var t = new Date()- 180000;
    t = new Date(t);
    t.getHours();

第二种思想:

var t = new Date()- 180000;
             t = new Date(t);
             var str = (t + '').slice(-26,-18).replace(':','');

那我们继续往下看,下面这样的写法有问题吗?:

var t = new Date() - 180000;
             t = new Date(t);
            var h= t.getHours();
            var m=t.getMinutes();
            var s=t.getSeconds();
        alert(h.toString()+m.toString()+s.toString());

这样还是错误的,因为要显示的格式是hhmmss,这样方法得到的个位数,不能出现OX形式


第一种写法:

var t = '' + new Date(new Date() - 180000);
alert(t.slice(16,24).replace(/:/g,''))

也可以写成:

alert(('' + new Date(new Date() - 180000)).slice(16,24).replace(/:/g,''))

注意:slice(16,24)是返回第16位到第25位之间的字符串,正好是hhmmss.
例如:
071725235702323.png

很容易看到:时分秒是第16-25位。

第二种方法完整写法如下:

var t = new Date() - 180000;
             t = new Date(t);
            var h='00' +  t.getHours();
var m='00' +  t.getMinutes();
var s='00' +t.getSeconds();
alert(h.slice(-2)+mslice(-2)+s.slice(-2));

解释:用到"00"+t.getseconds(),是因为:比如 '00' + 5,得到005;比如“00”+15得到0015,而我们要显示的是最后两位,即05,或者15,所以是slice(-2)

转载于:https://www.cnblogs.com/QingFlye/p/4320679.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值