与えられた日付の前月の日付を計算します.

979 ワード

例えば:所定の締切日enddate=2010-07-31
 計算開始日startdate=2010-06-30
 
この問題の鍵は以下の点について考えることです.
1、startdate年越し
2、startdateは2月(闰年の状況を考慮する必要がある)
3、大きさの月
 

 
function getInitStartDate(enddate){
	var comp = enddate.split("-");
	var year = comp[0];
	var month = comp[1];
	var date = comp[2];
	if(month == "01") {  //     
		month = 12;
		year = year - 1;
	} else { 
		month = month - 1;
		if(month == 2 && date > 28) {
			date = isLeapYear(year) ? 29 : 28;
		} else if(date == 31){
			switch(month) {
			case 4: 
			case 6:
			case 9:
			case 11: date = 30; break;
			default: break; 
		}
		}
	}
	month = (""+month).length==1 ? ("0"+month) : (""+month);
  	var dateFormat = year + "-" + month + "-" + date;
  	return dateFormat;
}

function isLeapYear(y) { //  y     
  return (y % 4 == 0) && (y % 400 == 0 || y % 100 != 0);
}

alert(getInitStartDate("2010-07-31"));