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();
  • 相关阅读:
    LeetCode OJ 112. Path Sum
    LeetCode OJ 226. Invert Binary Tree
    LeetCode OJ 100. Same Tree
    LeetCode OJ 104. Maximum Depth of Binary Tree
    LeetCode OJ 111. Minimum Depth of Binary Tree
    LeetCode OJ 110. Balanced Binary Tree
    apache-jmeter-3.1的简单压力测试使用方法(下载和安装)
    JMeter入门教程
    CentOS6(CentOS7)设置静态IP 并且 能够上网
    分享好文:分享我在阿里8年,是如何一步一步走向架构师的
  • 原文地址:https://www.cnblogs.com/icelin/p/3632647.html
Copyright © 2011-2022 走看看