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

지금 날짜로부터 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에 있습니다.

감사!



답변

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

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

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

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

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


답변

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

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


답변

으로 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(...)


답변

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

여기에 핵심이 있습니다.

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/


답변

이것을 사용하십시오 :

var startDate = new Date();
    startDate.setFullYear(startDate.getFullYear() - 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));


답변

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

// 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);" />