Date
JavaScript를 사용하여 현재 날짜를 추가하는 방법 JavaScript에는 .Net과 같은 내장 함수가 AddDay
있습니까?
답변
당신은 하나를 만들 수 있습니다 :-
Date.prototype.addDays = function(days) {
var date = new Date(this.valueOf());
date.setDate(date.getDate() + days);
return date;
}
var date = new Date();
alert(date.addDays(5));
필요한 경우 월을 자동으로 증가시킵니다. 예를 들면 다음과 같습니다.
8/31 + 1 일은 9/1이 됩니다.
setDate
직접 사용하는 문제 는 그것이 뮤 테이터이고 그런 종류의 것을 피하는 것이 가장 좋습니다. ECMA는 Date
불변 구조가 아닌 가변 클래스 로 취급하기에 적합했습니다 .
답변
정답 :
function addDays(date, days) {
var result = new Date(date);
result.setDate(result.getDate() + days);
return result;
}
잘못된 답변 :
이 답변은 때때로 올바른 결과를 제공하지만 종종 잘못된 연도 및 월을 반환합니다. 이 답변이 작동하는 유일한 시간은 요일을 추가하는 날짜가 현재 연도 및 월을 갖는 경우입니다.
// Don't do it this way!
function addDaysWRONG(date, days) {
var result = new Date();
result.setDate(date.getDate() + days);
return result;
}
증명 / 예
이 JsFiddle을 확인하십시오
// Correct
function addDays(date, days) {
var result = new Date(date);
result.setDate(result.getDate() + days);
return result;
}
// Bad Year/Month
function addDaysWRONG(date, days) {
var result = new Date();
result.setDate(date.getDate() + days);
return result;
}
// Bad during DST
function addDaysDstFail(date, days) {
var dayms = (days * 24 * 60 * 60 * 1000);
return new Date(date.getTime() + dayms);
}
// TEST
function formatDate(date) {
return (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();
}
$('tbody tr td:first-child').each(function () {
var $in = $(this);
var $out = $('<td/>').insertAfter($in).addClass("answer");
var $outFail = $('<td/>').insertAfter($out);
var $outDstFail = $('<td/>').insertAfter($outFail);
var date = new Date($in.text());
var correctDate = formatDate(addDays(date, 1));
var failDate = formatDate(addDaysWRONG(date, 1));
var failDstDate = formatDate(addDaysDstFail(date, 1));
$out.text(correctDate);
$outFail.text(failDate);
$outDstFail.text(failDstDate);
$outFail.addClass(correctDate == failDate ? "right" : "wrong");
$outDstFail.addClass(correctDate == failDstDate ? "right" : "wrong");
});
body {
font-size: 14px;
}
table {
border-collapse:collapse;
}
table, td, th {
border:1px solid black;
}
td {
padding: 2px;
}
.wrong {
color: red;
}
.right {
color: green;
}
.answer {
font-weight: bold;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<th colspan="4">DST Dates</th>
</tr>
<tr>
<th>Input</th>
<th>+1 Day</th>
<th>+1 Day Fail</th>
<th>+1 Day DST Fail</th>
</tr>
<tr><td>03/10/2013</td></tr>
<tr><td>11/03/2013</td></tr>
<tr><td>03/09/2014</td></tr>
<tr><td>11/02/2014</td></tr>
<tr><td>03/08/2015</td></tr>
<tr><td>11/01/2015</td></tr>
<tr>
<th colspan="4">2013</th>
</tr>
<tr>
<th>Input</th>
<th>+1 Day</th>
<th>+1 Day Fail</th>
<th>+1 Day DST Fail</th>
</tr>
<tr><td>01/01/2013</td></tr>
<tr><td>02/01/2013</td></tr>
<tr><td>03/01/2013</td></tr>
<tr><td>04/01/2013</td></tr>
<tr><td>05/01/2013</td></tr>
<tr><td>06/01/2013</td></tr>
<tr><td>07/01/2013</td></tr>
<tr><td>08/01/2013</td></tr>
<tr><td>09/01/2013</td></tr>
<tr><td>10/01/2013</td></tr>
<tr><td>11/01/2013</td></tr>
<tr><td>12/01/2013</td></tr>
<tr>
<th colspan="4">2014</th>
</tr>
<tr>
<th>Input</th>
<th>+1 Day</th>
<th>+1 Day Fail</th>
<th>+1 Day DST Fail</th>
</tr>
<tr><td>01/01/2014</td></tr>
<tr><td>02/01/2014</td></tr>
<tr><td>03/01/2014</td></tr>
<tr><td>04/01/2014</td></tr>
<tr><td>05/01/2014</td></tr>
<tr><td>06/01/2014</td></tr>
<tr><td>07/01/2014</td></tr>
<tr><td>08/01/2014</td></tr>
<tr><td>09/01/2014</td></tr>
<tr><td>10/01/2014</td></tr>
<tr><td>11/01/2014</td></tr>
<tr><td>12/01/2014</td></tr>
<tr>
<th colspan="4">2015</th>
</tr>
<tr>
<th>Input</th>
<th>+1 Day</th>
<th>+1 Day Fail</th>
<th>+1 Day DST Fail</th>
</tr>
<tr><td>01/01/2015</td></tr>
<tr><td>02/01/2015</td></tr>
<tr><td>03/01/2015</td></tr>
<tr><td>04/01/2015</td></tr>
<tr><td>05/01/2015</td></tr>
<tr><td>06/01/2015</td></tr>
<tr><td>07/01/2015</td></tr>
<tr><td>08/01/2015</td></tr>
<tr><td>09/01/2015</td></tr>
<tr><td>10/01/2015</td></tr>
<tr><td>11/01/2015</td></tr>
<tr><td>12/01/2015</td></tr>
</tbody>
</table>
답변
var today = new Date();
var tomorrow = new Date();
tomorrow.setDate(today.getDate()+1);
까다로울 수 있으므로주의하십시오. “내일”을 설정하면 현재 값이 “오늘”의 연도 및 월과 일치하므로 작동합니다. 그러나 “32”와 같은 날짜 번호로 설정하면 일반적으로 다음 달로 이동해도 여전히 잘 작동합니다.
답변
내 간단한 해결책은 다음과 같습니다.
nextday=new Date(oldDate.getFullYear(),oldDate.getMonth(),oldDate.getDate()+1);
이 솔루션은 일광 절약 시간제에 문제가 없습니다. 또한 년, 월, 일 등에 대한 오프셋을 추가하거나 대체 할 수 있습니다.
day=new Date(oldDate.getFullYear()-2,oldDate.getMonth()+22,oldDate.getDate()+61);
올바른 코드입니다.
답변
이 답변은 나에게 혼란스러워 보입니다.
var ms = new Date().getTime() + 86400000;
var tomorrow = new Date(ms);
getTime ()은 1970 년 이후 밀리 초를 제공하며 86400000은 하루의 밀리 초 수입니다. 따라서 ms에는 원하는 날짜의 밀리 초가 포함됩니다.
밀리 초 생성자를 사용하면 원하는 날짜 개체가 제공됩니다.
답변
시험
var someDate = new Date();
var duration = 2; //In Days
someDate.setTime(someDate.getTime() + (duration * 24 * 60 * 60 * 1000));
setDate ()를 사용하여 날짜를 추가해도 문제가 해결되지 않으면 2 월에 몇 일을 추가해보십시오. 새 날짜를 추가하려고하면 예상 한 결과를 얻지 못합니다.
답변
아래의 주요 예를 따를 때 추가하지 않은 한 해의 거래가 무엇인지 해결하려고 노력하면서 몇 년을 보냈습니다.
당신이 단순히 당신이 가지고있는 날짜에 단순히 n 일을 추가하려면 다음과 같이하는 것이 가장 좋습니다 :
myDate.setDate (myDate.getDate () + n);
또는 긴 버전
var theDate = new Date(2013, 11, 15);
var myNewDate = new Date(theDate);
myNewDate.setDate(myNewDate.getDate() + 30);
console.log(myNewDate);
오늘 / 내일은 혼란 스럽습니다. 현재 날짜를 새 날짜 변수로 설정하면 연도 값이 엉망이됩니다. 원래 날짜부터 일하면 그렇지 않습니다.