JavaScript中Date的一些细节

对于开发人员来说,Date有时候或许会很重要,我们可以通过new Date()来创建一个日期对象。例如:

var start = new Date(), //获取当前时间
    today = new Date(2013,6,6), //2013-7-6
    tommorow = new Date('2013-7-7'); //2013-7-7 
 

一般来说,上面的代码应该是很常见,也没什么特殊的需要注意的地方,唯一一点就是:

new Date(2013,6,6);   //参数中的第二个,也就是月份需要加1
new Date('2013-7-6'); //参数中的月份不需要加1 
 

有时候,我们或许想知道一个月第一天的前面一天是多少号,比如我想知道2013年3月1日前面的那一天是多少号,这样的话,或许会去写一些判断之类的语句,但是这个我们可以更轻松的用Date来计算:

var pre = new Date(2013,2,0);

上面的结果是2013年2月28日,我们不需要额外的写其他代码来确定。当然,我们也可以先创建一个时间,然后设置他的日期,比如:

var pre = new Date(2013,2,1);
pre.toLocaleString();    //"3/1/2013 12:00:00 AM"
pre.setDate(pre.getDate() - 1);
pre.toLocaleString();    //"2/28/2013 12:00:00 AM" 
 

上面的代码可以实现我们需要的功能,获取正确的结果,只不过在我看来还不是最好的方法。

 

当第三个参数我们传递0的时候,表示上一个月的最后一天,也就是这个月第一天的前一天,那么传递的为负数,或者超过了这个月的最大天数会是什么情况呢?先看看下面的代码:

var d0 = new Date(2013,6,0),  //2013-6-30
    d1 = new Date(2013,6,-1), //2013-6-29
    d2 = new Date(2013,6,-2), //2013-6-28

    d3 = new Date(2013,6,32), //2013-8-1
    d4 = new Date(2013,6,33); //2013-8-2 
 

可见,如果超出正常范围,都会往前后顺延。

此外,如果我们不确定这一个月到底有多少天,我们只想在这个月末尾的基础上加几天,我们就得通过设置时间来实现了:

var pre = new Date(2013,6,6);
pre.toLocaleString();    //"7/6/2013 12:00:00 AM"
pre.setDate(pre.getDate() + 30);
pre.toLocaleString();    //"8/5/2013 12:00:00 AM" 
 

总结:日期在开发中还是很常见的,以前都没有注意到上面的这一些细节的东西,如果了解了这些细节,或许能让程序更精简,更简单。

 

转自;http://www.sanjh.cn/javascript-date-xi-jie.html

posted @ 2013-08-29 14:21  小林夕  阅读(240)  评论(0编辑  收藏  举报