날짜를 날짜로 추가하는 방법

날짜를 현재에 추가하는 방법DateJavaScript를 사용하시겠습니까?JavaScript에는 와 같은 기능이 내장되어 있습니까?네트워크AddDay()?



질문에 대한 답변



다음을 사용하여 작성할 수 있습니다.

Date.prototype.addDays = function(days) {
var date = new Date(this.valueOf());
date.setDate(date.getDate() + days);
return date; }
var date = new Date();
console.log(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); 

이것은 까다로울 수 있으니 조심하세요.설정 시tomorrow현재 값이 다음 연도와 월에 일치하기 때문에 기능합니다.today다만, 통상, 「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은 1일 동안의 밀리초 수입니다.따라서 ms에는 원하는 날짜의 밀리초가 포함됩니다.

밀리초 생성자를 사용하면 원하는 날짜 개체가 제공됩니다.