对于开发人员来说,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"
总结:日期在开发中还是很常见的,以前都没有注意到上面的这一些细节的东西,如果了解了这些细节,或许能让程序更精简,更简单。