第五週第五日
3251 ワード
javascriptはNヶ月前の日付(YYY-M-DD)を計算します.
javascript日付date
やる前に考えた問題:例えば、今は8月です.前の8ヶ月なら、前の年の12月です. です.は31日なら、前のNヶ月は31日がありますか?2月は同じです. 月は閏年を考慮しなければならないです.28日間だけです.
javascript日付date
やる前に考えた問題:
/**
*
*
* @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("
"));
}
結果出力: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