zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    MD5 加密 以及 加盐加密
    github--新手使用错误分析
    iOS开发UI篇—UITabBarController简单介绍
    Xcode 那些简单实用的插件推荐
    app 转caf 音频 代码
    关于block 用法
    iOS 之播放系统声音
    ios如何实现推送通知
    Centos7安装Redis
    SpringCloud-Zuul网关
  • 原文地址:https://www.cnblogs.com/xiaolinxi/p/3289066.html
Copyright © 2011-2022 走看看