диалоговое окно «Сценарий на этой странице может быть занят …», даже если вы решите позволить сценарию продолжать работу, то такие события, как изменение размера и размытие, будут запускаться и обрабатываться, даже когда сценарий находится в середине занятого цикла, за исключением Opera. Date некоторое время назад, для меня, в IE с плагином Sun Java, вызов любого метода в апплете может привести к запуску событий и повторному вводу сценария. Это всегда была ошибка, чувствительная ко времени, и, возможно, с тех пор Sun исправила ее (я, конечно, на это надеюсь). AddDay?

На SO уже есть вопрос, касающийся этой проблемы:

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 . Если вы пишете фреймворк, который вы собираетесь использовать в сложных приложениях, это может быть хорошим шагом. Есть ли разница? Глядя на вывод

Проблема с использованием setDate напрямую заключаются в том, что это мутатор, и такого рода вещи лучше избегать. ECMA счел нужным обработать Date order

Правильный ответ :

function addDays(date, days) {
  var result = new Date(date);
  result.setDate(result.getDate()   days);
  return result;
}

Неверный ответ :

. Он включает интерфейс на основе Java, который определяет URL-адреса и упрощает доступ к ним. или с использованием оператора распространения, подобного этому: Если мы хотим сохранить атрибуты свойств, такие как функция

// Don't do it this way!
function addDaysWRONG(date, days) {
  var result = new Date();
  result.setDate(date.getDate()   days);
  return result;
}

Proof / Example

Проверьте эту книгу 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», обычно все равно будет работать, чтобы перенести его на следующий месяц.

Обновление 2018-07-21:

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 содержит миллисекунды для желаемой даты.

Использование конструктора в миллисекундах дает желаемый объект даты.

Try

var someDate = new Date();
var duration = 2; //In Days
someDate.setTime(someDate.getTime()    (duration * 24 * 60 * 60 * 1000));

Я думаю, что это старый вопрос, но самым простым способом было бы следующее:

. В Колумбии вы получите

Если вы хотите просто добавить n дней к вашей дате, лучше всего пойти:

Что происходит?

или длинная версия

var theDate = new Date(2013, 11, 15);
var myNewDate = new Date(theDate);
myNewDate.setDate(myNewDate.getDate()   30);
console.log(myNewDate);

Это сегодня / завтра вещи сбивают с толку. Установив текущую дату в новую переменную даты, вы запутаете значение года. если вы работаете с первоначальной даты, вы не будете.

фактически поддерживает CORS moment.js . JavaScript не имеет очень хороших собственных методов даты / времени. Ниже приведен пример синтаксиса Moment:

var nextWeek = moment().add(7, 'days');
alert(nextWeek);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment-with-locales.min.js"></script>

Ссылка: http://momentjs.com/docs/ndom**** automotive/manipulation/add/

Я создал эти расширения вчера вечером:
, вы можете передать положительные или отрицательные значения ;

Пример:

var someDate = new Date();
var expirationDate = someDate.addDays(10);
var previous = someDate.addDays(-5);


Date.prototype.addDays = function (num) {
    var value = this.valueOf();
    value  = 86400000 * num;
    return new Date(value);
}

Date.prototype.addSeconds = function (num) {
    var value = this.valueOf();
    value  = 1000 * num;
    return new Date(value);
}

Date.prototype.addMinutes = function (num) {
    var value = this.valueOf();
    value  = 60000 * num;
    return new Date(value);
}

Date.prototype.addHours = function (num) {
    var value = this.valueOf();
    value  = 3600000 * num;
    return new Date(value);
}

Date.prototype.addMonths = function (num) {
    var value = new Date(this.valueOf());

    var mo = this.getMonth();
    var yr = this.getYear();

    mo = (mo   num) % 12;
    if (0 > mo) {
        yr  = (this.getMonth()   num - mo - 12) / 12;
        mo  = 12;
    }
    else
        yr  = ((this.getMonth()   num - mo) / 12);

    value.setMonth(mo);
    value.setYear(yr);
    return value;
}
int days = 1;
var newDate = new Date(Date.now()   days * 24*60*60*1000);

CodePen

var days = 2;
var newDate = new Date(Date.now()   days * 24*60*60*1000);

document.write('Today: <em>');
document.write(new Date());
document.write('</em><br/> New: <strong>');
document.write(newDate);

простейшего решения.

 Date.prototype.addDays = function(days) {
   this.setDate(this.getDate()   parseInt(days));
   return this;
 };

 // and then call

 var newDate = new Date().addDays(2); // 2 days
 console.log(newDate);

 // or

 var newDate1 = new Date().addDays(-2); //-2 days
 console.log(newDate1);

Late to the party, но если вы используете jQuery затем , есть отличный плагин под названием Moment:

Vue.js

var myDateOfNowPlusThreeDays = moment().add(3, "days").toDate();

http://momentjs.com/docs/ # / манипулирование /

для хранения объектов заключается в том, что эта функция не может сериализовать частные члены. Эту проблему можно решить, переписав

LIVE DEMO

Спасибо Джейсону за ваш ответ, который работает, как и ожидалось, вот сочетание вашего кода и удобного формата AnthonyWJones:

Date.prototype.addDays = function(days){
    var ms = new Date().getTime()   (86400000 * days);
    var added = new Date(ms);
    return added;
}

Старый, я знаю, но иногда мне нравится это:

function addDays(days) {
    return new Date(Date.now()   864e5 * days);
}

Документация mozilla для setDate () не указывает на то, что он будет обрабатывать конец месяца scenarios.See https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date

setDate ()

  • Будет эквивалентно:

Вот почему я использую setTime (), когда мне нужно добавить дни.

Я также дам ответ:
. Лично я стараюсь избегать необоснованного объявления переменных, вызовов методов и вызовов конструктора, так как они все дороги по производительности. (в пределах разумного, конечно)
Я собирался оставить это как просто комментарий под Ответом, данным @AnthonyWJones, но лучше подумать об этом.

// Prototype usage...
Date.prototype.addDays = Date.prototype.addDays || function( days ) {
    return this.setTime( 864E5 * days   this.valueOf() ) && this;
};

// Namespace usage...
namespace.addDaysToDate = function( date, days ) {
    return date.setTime( 864E5 * days   date.valueOf() ) && date;
};

// Basic Function declaration...
function addDaysToDate( date, days ) {
    return date.setTime( 864E5 * days   date.valueOf() ) && date;
};

Поскольку в настоящее время не существует работающего кросс-браузерного решения без ложных срабатываний, вам следует подумать дважды об отключении периодической активности на вашем веб-сайте.
Пример:
2 ноября 2014 г., 02:00 — конец летнего времени.

var dt = new Date( 2014, 10, 1, 10, 30, 0 );
console.log( dt );                  // Sat Nov 01 2014 10:30:00
console.log( dt.addDays( 10 ) );    // Tue Nov 11 2014 09:30:00

Если вы хотите сохранить время в летнее время (таким образом, 10:30 все равно будет 10:30) …

// Prototype usage...
Date.prototype.addDays = Date.prototype.addDays || function( days ) {
    return this.setDate( this.getDate()   days ) && this;
};

// Namespace usage...
namespace.addDaysToDate = function( date, days ) {
    return date.setDate( date.getDate()   days ) && date;
};

// Basic Function declaration...
function addDaysToDate( date, days ) {
    return date.setDate( date.getDate()   days ) && date;
};

Итак, теперь у вас есть …

var dt = new Date( 2014, 10, 1, 10, 30, 0 );
console.log( dt );                  // Sat Nov 01 2014 10:30:00
console.log( dt.addDays( 10 ) );    // Tue Nov 11 2014 10:30:00

Нет, в javascript нет встроенной функции, но вы можете использовать простую строку кода

timeObject.setDate(timeObject.getDate()   countOfDays);

У меня возникли проблемы с переходом на летнее время в предлагаемом решении.

Используя getUTCDate / setUTCDateвместо этого я решил свою проблему.

// Curried, so that I can create helper functions like `add1Day`
const addDays = num => date => {
  // Make a working copy so we don't mutate the supplied date.
  const d = new Date(date);

  d.setUTCDate(d.getUTCDate()   num);

  return d;
}

Без использования второй переменной вы можете заменить 7 на следующие x дней:

let d=new Date(new Date().getTime()   (7 * 24 * 60 * 60 * 1000));

Я использую что-то вроде:

new Date(dateObject.getTime()   amountOfDays * 24 * 60 * 60 * 1000)

Работает с дневное время:

new Date(new Date(2014, 2, 29, 20, 0, 0).getTime()   1 * 24 * 60 * 60 * 1000)

Работает с новым годом:

new Date(new Date(2014, 11, 31, 20, 0, 0).getTime()   1 * 24 * 60 * 60 * 1000)

Он может быть параметризован:

function DateAdd(source, amount, step) {
  var factor = 1;
  if (step == "day") factor = 24 * 60 * 60 * 1000;
  else if (step == "hour") factor = 60 * 60 * 1000;
  ...
  new Date(source.getTime()   amount * factor);
}

Я использую следующее решение.

var msInDay = 86400000;
var daysToAdd = 5;
var now = new Date();
var milliseconds = now.getTime();
var newMillisecods = milliseconds   msInDay * daysToAdd;
var newDate = new Date(newMillisecods);
//or now.setTime(newMillisecods);

Date имеет конструктор, который принимает int. Этот аргумент представляет общее количество миллисекунд до / после 1 января 1970 года. Он также имеет метод setTime, который делает то же самое без создания нового объекта Date.

Здесь мы конвертируем дни в миллисекунды и добавляем это значение к значению, предоставленному getTime. Наконец, мы передаем результат конструктору Date (миллисекунды) или методу setTime (миллисекунды).

Мы только что выпустили с противоположной структурой, как показано ниже. setTime() (или setHours()), вы можете сделать это следующим образом:

Date.prototype.addDays= function(d){
  this.setDate(this.getDate()   d);
  return this;
};

var tomorrow = new Date().addDays(1);

Старый:

Вместо использования setTime() вы можете использовать setHours():

Date.prototype.addDays= function(d){
    this.setHours(this.getHours()   d * 24);
    return this;
};

var tomorrow = new Date().addDays(1);

См. JSFiddle

Очень простой код для добавления дней в дате в Java. script.

var d = new Date();
d.setDate(d.getDate()   prompt('how many days you want to add write here'));
alert(d);

. Наша команда рассматривает date-fns Лучшую библиотеку в этом пространстве. Он обрабатывает даты как неизменяемые ( Moment.js, вероятно, никогда не примет неизменность ), это быстрее, и может быть загружен модульно.

const newDate = DateFns.addDays(oldDate, 2);

Существует setDate и У меня была такая же проблема в ASP.Net MVC с HttpPostedFilebase, и вместо использования формы при отправке мне нужно было нажимать кнопку, когда мне нужно было что-то делать, а затем, если все в порядке, отправить форму, так что здесь Вот как я это сделал для табличных данных. Это прекрасный пример того, как люди действуют без понимания.

var newDate = aDate.setDate(aDate.getDate()   numberOfDays);

javascript — способы обойти политику одного и того же происхождения DateHelper объект, который выглядит примерно так:

var DateHelper = {
    addDays : function(aDate, numberOfDays) {
        aDate.setDate(aDate.getDate()   numberOfDays); // Add numberOfDays
        return aDate;                                  // Return the date
    },
    format : function format(date) {
        return [
           ("0"   date.getDate()).slice(-2),           // Get day and pad it with zeroes
           ("0"   (date.getMonth() 1)).slice(-2),      // Get month and pad it with zeroes
           date.getFullYear()                          // Get full year
        ].join('/');                                   // Glue the pieces together
    }
}

// With this helper, you can now just use one line of readable code to :
// ---------------------------------------------------------------------
// 1. Get the current date
// 2. Add 20 days
// 3. Format it
// 4. Output it
// ---------------------------------------------------------------------
document.body.innerHTML = DateHelper.format(DateHelper.addDays(new Date(), 20));

JSFiddle this Fiddle С чем вы столкнулись

в запросе Ajax. Надеюсь, это поможет кому-то, кто застрял в подобной проблеме.

var someDate = new Date();
var numberOfDaysToAdd = 6;
someDate.setDate(someDate.getDate()   numberOfDaysToAdd); 
Formatting to dd/mm/yyyy :

var dd = someDate.getDate();
var mm = someDate.getMonth()   1;
var y = someDate.getFullYear();

var someFormattedDate = dd   '/'  mm   '/'  y;

Общий прототип без переменных, он применяется к существующему значению Date:

Date.prototype.addDays = function (days) {
    return new Date(this.valueOf()   days * 864e5);
}
    //the_day is 2013-12-31
    var the_day = Date.UTC(2013, 11, 31); 
    // Now, the_day will be "1388448000000" in UTC 8; 
    var the_next_day = new Date(the_day   24 * 60 * 60 * 1000);
    // Now, the_next_day will be "Wed Jan 01 2014 08:00:00 GMT 0800"

Для тех, кто использует Angular:

Допустим, у нас есть родительский элемент UL с несколькими дочерними элементами:

$scope.booking.totTijd.setMinutes($scope.booking.totTijd.getMinutes() 15);
$scope.booking.totTijd.setDate($scope.booking.totTijd.getDate()   1);

попробуйте

function addDays(date,days) {        
      var one_day=1000*60*60*24; 
      return new Date(date.getTime() (days*one_day)).toLocaleDateString(); 
    }