美文网首页
第五周第五天

第五周第五天

作者: yisky | 来源:发表于2016-08-05 18:56 被阅读3次

    javascript 计算N个月前的日期(YYYY-MM-DD)

    标签: javascript 日期 date


    做之前思考的问题:

    1. 比如现在是8月,如果往前8个月,那么应该就是上一年12月.
    2. 如果是31号,那么往前N个月,这个月是否有31号..2月同理.
    3. 2月还得考虑闰年,只有28天.
    /**
    * 获取上一个月
    *
    * @date 现在的日期. 格式为yyyy-mm-dd的日期,如:2014-01-25
    * @pre 往前算几个月,Int. 如: 1月,2月,3月,....N月
    */
    function getPreMonth(date,pre) {
        var arr = date.split('-');
        var year = arr[0]; 
        var month = arr[1]; 
        var day = arr[2];
        var year2 = year;
        var month2 = parseInt(month) - pre;
        if (month2 <= 0) {
            month2 =8-(pre- 12* parseInt(Math.round(pre/12)));
            if(month2>12){
                year2 =year2 - parseInt(Math.round(pre/12)) +1;
                month2 -=12;
            }else{
                year2 =year2 - parseInt(Math.round(pre/12));
            }
        } 
        var day2 = day;
        var days2 = new Date(year2, month2, 0);
        days2 = days2.getDate();
        if (day2 > days2) {
            day2 = days2;
        }
        if (month2 < 10) {
            month2 = '0' + month2;
        }
        var t2 = year2 + '-' + month2 + '-' + day2;
        return t2;
    }
    
    /* 以下为测试代码 */
    window.onload = function(){
        var list=[];
        for(var i=0;i<100;i++)
        {
            list.push(i + " 月前 : "+ getPreMonth("2016-08-31",i));
        }
        console.log(list.join("<br/>"));
    
    }
    

    结果输出:

    0 月前 : 2016-08-31
    1 月前 : 2016-07-31
    2 月前 : 2016-06-30
    3 月前 : 2016-05-31
    4 月前 : 2016-04-30
    5 月前 : 2016-03-31
    6 月前 : 2016-02-29
    7 月前 : 2016-01-31
    8 月前 : 2015-12-31
    9 月前 : 2015-11-30
    10 月前 : 2015-10-31
    11 月前 : 2015-09-30
    12 月前 : 2015-08-31
    13 月前 : 2015-07-31
    14 月前 : 2015-06-30
    15 月前 : 2015-05-31
    16 月前 : 2015-04-30
    17 月前 : 2015-03-31
    18 月前 : 2015-02-28
    19 月前 : 2015-01-31
    20 月前 : 2014-12-31
    21 月前 : 2014-11-30
    22 月前 : 2014-10-31
    23 月前 : 2014-09-30
    24 月前 : 2014-08-31
    25 月前 : 2014-07-31
    26 月前 : 2014-06-30
    27 月前 : 2014-05-31
    28 月前 : 2014-04-30
    29 月前 : 2014-03-31
    30 月前 : 2014-02-28
    31 月前 : 2014-01-31
    32 月前 : 2013-12-31
    33 月前 : 2013-11-30
    34 月前 : 2013-10-31
    35 月前 : 2013-09-30
    36 月前 : 2013-08-31
    37 月前 : 2013-07-31
    38 月前 : 2013-06-30
    39 月前 : 2013-05-31
    40 月前 : 2013-04-30
    41 月前 : 2013-03-31
    42 月前 : 2013-02-28
    43 月前 : 2013-01-31
    44 月前 : 2012-12-31
    45 月前 : 2012-11-30
    46 月前 : 2012-10-31
    47 月前 : 2012-09-30
    48 月前 : 2012-08-31
    49 月前 : 2012-07-31
    50 月前 : 2012-06-30
    51 月前 : 2012-05-31
    52 月前 : 2012-04-30
    53 月前 : 2012-03-31
    54 月前 : 2012-02-29
    55 月前 : 2012-01-31
    56 月前 : 2011-12-31
    57 月前 : 2011-11-30
    58 月前 : 2011-10-31
    59 月前 : 2011-09-30
    60 月前 : 2011-08-31
    61 月前 : 2011-07-31
    62 月前 : 2011-06-30
    63 月前 : 2011-05-31
    64 月前 : 2011-04-30
    65 月前 : 2011-03-31
    66 月前 : 2011-02-28
    67 月前 : 2011-01-31
    68 月前 : 2010-12-31
    69 月前 : 2010-11-30
    70 月前 : 2010-10-31
    71 月前 : 2010-09-30
    72 月前 : 2010-08-31
    73 月前 : 2010-07-31
    74 月前 : 2010-06-30
    75 月前 : 2010-05-31
    76 月前 : 2010-04-30
    77 月前 : 2010-03-31
    78 月前 : 2010-02-28
    79 月前 : 2010-01-31
    80 月前 : 2009-12-31
    81 月前 : 2009-11-30
    82 月前 : 2009-10-31
    83 月前 : 2009-09-30
    84 月前 : 2009-08-31
    85 月前 : 2009-07-31
    86 月前 : 2009-06-30
    87 月前 : 2009-05-31
    88 月前 : 2009-04-30
    89 月前 : 2009-03-31
    90 月前 : 2009-02-28
    91 月前 : 2009-01-31
    92 月前 : 2008-12-31
    93 月前 : 2008-11-30
    94 月前 : 2008-10-31
    95 月前 : 2008-09-30
    96 月前 : 2008-08-31
    97 月前 : 2008-07-31
    98 月前 : 2008-06-30
    99 月前 : 2008-05-31
    

    相关文章

      网友评论

          本文标题:第五周第五天

          本文链接:https://www.haomeiwen.com/subject/oeehsttx.html