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

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

题目:获取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.
例如:

很容易看到:时分秒是第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)

posted @ 2015-03-07 17:31  青青flye  阅读(1489)  评论(0编辑  收藏  举报