第五周第五天

javascript 計(jì)算N個(gè)月前的日期(YYYY-MM-DD)

標(biāo)簽: javascript 日期 date


做之前思考的問(wèn)題:

  1. 比如現(xiàn)在是8月,如果往前8個(gè)月,那么應(yīng)該就是上一年12月.
  2. 如果是31號(hào),那么往前N個(gè)月,這個(gè)月是否有31號(hào)..2月同理.
  3. 2月還得考慮閏年,只有28天.
/**
* 獲取上一個(gè)月
*
* @date 現(xiàn)在的日期. 格式為yyyy-mm-dd的日期,如:2014-01-25
* @pre 往前算幾個(gè)月,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;
}

/* 以下為測(cè)試代碼 */
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/>"));

}

結(jié)果輸出:

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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容