zoukankan      html  css  js  c++  java
  • 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();
  • 相关阅读:
    DOM优化
    jQuery绑定以及解除时间方法总结,以及事件触发的方法
    javascript的异步编程方法
    innerHTML,innertext ,textcontent,write()
    关于盒子的那些事
    关于HTTP的几种
    关于php中正则匹配包括换行符在内的任意字符的问题总结
    CSS透明属性详解
    Linux下apache日志分析与状态查看方法
    折半排序 (稳定的排序)
  • 原文地址:https://www.cnblogs.com/icelin/p/3632647.html
Copyright © 2011-2022 走看看