Javascript日期类型的妙用
http://heeroluo.net/Article/Detail/110
获取某个月份的天数
相信大家读小学的时候就知道一年十二个月各有多少天了,这里面有个特殊的存在——2月。闰年的2月有29天,非闰年的2月只有28天。估计不少人跟我一样,已经不记得闰年的规则了,这时候,下面的这个方法就派上用场了。
var date = new Date(2013, 2, 0); date.getDate(); // 28 date = new Date(2012, 2, 0); date.getDate(); // 29
创建Date对象时可以传入三个参数,分别是年、月、日,如果日的参数为0,那创建出来的对象表示的就是该月的最后一天,如此就可以知道那个月有多少天了。
同样的,我们也可以通过这个方法判断某年是否闰年:
function isLeapYear(year) { return new Date(year, 2, 0).getDate() === 29; } isLeapYear(2012); // true
获取时区
日期类型的 getTimezoneOffset() 方法可以获取格林威治时间和本地时间之间的时间差,以分钟为单位。例如:
var date = new Date(); var timezoneOffset = date.getTimezoneOffset(); // 中国(东八区)为-480 -timezoneOffset / 60; // 8
把获取到的时间差除以60,再取负值就是所在的时区了。
除此以外,还有一个方法。调用日期类型的 toString() 后,可以得到一段固定格式的日期字符串:
new Date().toString(); // Sun Mar 10 2013 16:41:12 GMT+0800 (中国标准时间)
显而易见,GMT后面的+800就是我们要的时区了,只要通过正则表达式匹配一下就可以拿到该值。
/GMT([+-]\d+)/.test( new Date().toString() ); var timezone = RegExp.$1; // +0800
不过此时的 timezone 变量是字符串,如果要转成数字类型,还要进行一些处理。
计算运行时间
如何测量某段程序的执行时间呢?方法很简单,在执行前记录一次时间,执行后用当前时间减去执行前的时间,就得到结果了:
var startTime = new Date(); // some program console.log(new Date() - startTime);
这里无需手动把日期转换为数字,因为进行减法运算的时候自然会强制转换。这样算出来的结果是毫秒级的,精度不是很够,不过对浏览器端的Javascript来说,也没必要纠结于1毫秒以内的消耗了。
删除cookie
准确地说,我们没法直接通过Javascript删除cookie。要想把某个cookie从这个世界抹杀掉,唯一的办法就是让它过期,这样浏览器的内建机制就会把它自动干掉。
而要让cookie过期,最直截了当的方法就是把它的过期时间设为最小值。Javascript里面能表示的最小日期就是1970年1月1日0时0点0分,通过 new Date(0) 就可以创建出这样一个日期对象:
var cookieName = 'name'; // cookie名 document.cookie = cookieName + '=' + '; expires=' + new Date(0).toUTCString();