그래서이 함수는 기본적으로 정수의 입력을 받아 오늘 날짜를 기준으로합니다.이 함수는 'n'개월 수로 돌아갑니다. 예를 들어 오늘 날짜는 2012 년 11 월 20 일입니다. 'n'= 1이면 2012 년 10 월 20 일을 반환합니다.지난 달 계산
임씨가 직면하는 문제는 매월 2 월에서 5 월 사이이며 1 년 변수가 1을 감산한다는 것입니다. 예를 들어 n = 6이면 2012 년 5 월 20 일을 반환합니다. 대신 2012 년 5 월 20 일을 반환합니다.
윤년 문제 일 수 있다고 생각했지만 n = 18로 테스트했을 때 2011 년 5 월 20 일 대신 2010 년 5 월 20 일 반환되며 2011 년은 윤년이 아닙니다.
누구나 내가 이것을 피하기 위해 무엇을 할 수 있는지 알고 있습니까?
lastNmonths = function(n) {
var date = new Date();
if (n <= 0)
console.log([date.getFullYear(), date.getMonth() + 1 , date.getDate()].join('-'));
var years = Math.round(n/12);
var months = n % 12;
if (years > 0)
date.setFullYear(date.getFullYear() - years);
if (months > 0) {
if (months >= date.getMonth()) {
date.setFullYear(date.getFullYear());
months = 12 - months;
date.setMonth(date.getMonth() + months);
} else {
date.setMonth(date.getMonth() - months);
}
}
console.log([date.getFullYear(), date.getMonth() + 1, date.getDate()].join('-'));
};
당신은 단순히'setMonth'하고 당신을 위해 연도를 조정합니다 할 수 있어야한다. 'date.setMonth (date.getMonth() - 12)'는 12 개월 전입니다. – Shmiddty