Javascript에서 지금부터 1 년을 결정하는 방법


111

지금 날짜로부터 1 년을 얻으려고하는데 작동하지 않습니다.

JS :

var now = new Date();

var oneYr = new Date();
oneYr.setYear(now.getYear() + 1);
$("#yearFromNow").append(oneYr.toString());

var oneMonth = new Date();
oneMonth.setMonth(now.getMonth() + 1);
$("#monthFromNow").append(oneMonth.toString());

산출:

one mo. = Thu Dec 22 112 15:16:01 GMT-0500 (Eastern Standard Time)

one yr. = Sun Jan 22 2012 15:16:01 GMT-0500 (Eastern Standard Time)

올해는 Dec 22 112-?? 월이 올바르게 표시 Jan 22 2012됩니다.

수정하고 싶다면 http://jsbin.com/alezaj/edit#javascript,html,live . 이것은 Chrome 및 Firefox에 있습니다.

감사!

답변:


88

getFullYear()대신을 사용해야 합니다 getYear(). getYear()실제 연도에서 1900을 뺀 값을 반환합니다 (따라서 상당히 쓸모가 없습니다).

따라서 현재 시점으로부터 정확히 1 년을 표시하는 날짜는 다음과 같습니다.

var oneYearFromNow = new Date();
oneYearFromNow.setFullYear(oneYearFromNow.getFullYear() + 1);

2 월 29 일에 변경하면 날짜가 조정됩니다.

마찬가지로 getMonth()및을 통해 지금부터 한 달이 지난 날짜를 가져올 수 있습니다 setMonth(). 12 월에한다면 올해에서 내년으로 "이월"하는 것에 대해 걱정할 필요가 없습니다. 날짜가 자동으로 조정됩니다. getDate()및을 통해 월일에도 동일하게 적용됩니다 setDate().


1
윤년을 어떻게 처리하는지 궁금한 사람을 위해 Firefox 콘솔에서이 작업을 수행했습니다 ... >> x = new Date ( '2000-02-29')-> Date 2000-02-29T00 : 00 : 00.000Z >> x.setYear (2001)-> 983404800000 >> x.toLocaleFormat ( '% d- % b- % Y')-> "01-Mar-2001"
Ivan

29
재미 있지 않나요? 지금부터 1 년 후 자바 스크립트로 날짜를 얻으려면 다음과 같이 작성해야합니다. new Date(new Date().setFullYear(new Date().getFullYear() + 1))
LucasM

205

이것은 Date단 한 줄로 정확히 1 년을 만들 것입니다. 먼저 우리는 얻을 fullYearA로부터 new Date그 a의 년으로, 세트 그것을 증가, new Date. 우리가 거기에서 끝났다고 생각할 수도 있지만, 중지하면 Date객체가 아닌 타임 스탬프를 반환 하므로 모든 것을 Date생성자 에 래핑합니다 .

new Date(new Date().setFullYear(new Date().getFullYear() + 1))

13
setYear()되어 사용되지 , setFullYear()대신 사용해야합니다.
tsauerwein 2015

1
할당 할 중간 변수가없는 하나의 라이너! 우수한!
theUtherSide

1
이것은 시간, 분, 초를 처리하지 않고 현재 시간으로 설정됩니다
Dheeraj

32

으로 setYear()사용되지 않으며, 올바른 변형은 다음과 같습니다

// plus 1 year
new Date().setFullYear(new Date().getFullYear() + 1)
// plus 1 month
new Date().setMonth(new Date().getMonth() + 1)
// plus 1 day
new Date().setDate(new Date().getDate() + 1)

모든 예제는 Date객체 를 얻고 싶다면 Unix 타임 스탬프를 반환합니다.new Date(...)


6

이 페이지와 여기 의 답변 중 일부를 사용하여이 답변 중 어느 것도 나를 위해 완전히 해결되지 않았기 때문에 내 답변을 생각해 냈습니다.

여기에 핵심이 있습니다.

var startDate = "27 Apr 2017";
var numOfYears = 1;
var expireDate = new Date(startDate);
expireDate.setFullYear(expireDate.getFullYear() + numOfYears);
expireDate.setDate(expireDate.getDate() -1);

그리고 여기에 작동 예제가있는 JSFiddle이 있습니다 : https://jsfiddle.net/wavesailor/g9a6qqq5/


1
expireDate.getDate ()-1은 무엇입니까?
Uzer


1

다른 사람들이 게시 한대로 setFullyear를 사용하지만 이것은 날짜 개체가 아닌 타임 스탬프 값을 반환합니다. 프로토 타입을 통해 기능을 추가하는 것도 좋은 후보 imho입니다. 이것은 다음과 같은 패턴으로 이어집니다.

Date.prototype.addYears = function(n) {
    var now = new Date();
    return new Date(now.setFullYear(now.getFullYear() + n));
};

console.log('Year from now is', new Date().addYears(1));

0

아주 간단한 방법으로. 이 코드를 사용하십시오.

// define function 
function nextYearDate(date1) {
    var date2 = new Date(date1);
    var date3 = date2.setDate(date2.getDate() - 1);
    var date = new Date(date3);
    var day = date.getDate();
    var month = date.getMonth()+1;
    var year = date.getFullYear()+1;
    var newdate = year + '-' + (month < 10 ? '0' : '') + month + '-' + (day < 10 ? '0' : '') + day;
    $("#next_date").val(newdate);
}
// call function.
<input type="date" name="current_date" id="current_date" value="" onblur="nextYearDate(this.value);" />

<input type="date" name="next_date" id="next_date" value="" onblur="nextYearDate(this.value);" />

1
도대체 왜 JQuery가 여기에서 못생긴 머리를 키우고 있습니까? ! JQuery와 = JS
Uzer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.