Дополнительно
Добавить дни к дате JavaScript
Как добавить дни к текущей Дате
с помощью JavaScript. Есть ли в JavaScript встроенная функция, подобная .Net'у AddDay
?
974
20
Вы можете создать его с помощью:-
Это позаботится об автоматическом увеличении месяца, если это необходимо. Например:
8/31 + 1 день станет 9/1.
Проблема с непосредственным использованием
setDate
заключается в том, что это мутатор, а такого рода вещей лучше избегать. ECMA посчитала нужным рассматриватьDate
как изменяемый класс, а не как неизменяемую структуру.Правильный Ответ:
Неправильный Ответ:
Этот ответ иногда предоставляет правильный результат, но очень часто возвращает неправильный год и месяц. Единственный раз, когда этот ответ работает, если дата, которое вы добавляете дни, случается, текущий год и месяц.
Доказательство / Пример
[Проверить это JsFiddle][1]
в
в
Будьте осторожны, потому что это может быть сложно. При установке "завтра", это работает только потому, что текущее значение совпадает с годом и месяцем для "сегодня". Однако, установка на число даты, такое как "32", обычно срабатывает, чтобы переместить его на следующий месяц.
Мое простое решение:
данное решение не иметь проблем с переходом на летнее время. Кроме того, можно добавить/суб любого смещения для лет, месяцев, дней и т. д.
это правильный код.
Эти ответы кажутся мне запутанными, я предпочитаю:
getTime() дает нам миллисекунды с 1970 года, а 86400000 - это количество миллисекунд в сутках. Следовательно, ms содержит миллисекунды для нужной даты.
Использование конструктора millisecond дает нужный объект даты.
Попробовать
Через setDate (), чтобы добавить дату не решить вашу проблему, попробуйте добавить несколько дней до февраля месяца, если вы пытаетесь добавить нового дня, она бы не привести к тому, что вы ожидали.
Просто непонятно, что дело было с год не добавляя при следовании привести примеры ниже.
Если вы хотите просто добавить N дней до даты вы-лучшая:
или обширный версии
Сегодня/завтра вещи путаете. Установка текущей даты в новой даты переменной будет испортить году. если вы работаете с первоначальной даты вы выиграли'т.
Если вы можете, использовать moment.js. В JavaScript не'т иметь очень хороший родной дата/время методов. Ниже приведен пример момент'синтаксис с:
в
в
Ссылка: http://momentjs.com/docs/#/manipulating/add/
Сайт CodePen
в
в
Я создал эти расширения прошлой ночью: вы можете пройти либо положительные или отрицательные значения;
пример:
Самым простым решением.
в
в
Без использования второй переменной, вы можете заменить 7 следующего х дней:
Спасибо Джейсон за ваш ответ, который работает как ожидалось, вот-это смесь из кода и удобный формат AnthonyWJones :
Старый я знаю, но иногда мне нравится этот:
Опоздал на вечеринку, но <удар>но если вы используете
библиотека jQuery
то</удара> там's превосходный плагин, который называется Момент:http://momentjs.com/
http://momentjs.com/docs/#/manipulating/
И много других хороших вещей там!
Редактировать: на jQuery ссылка удалена спасибо aikeru'ы комментарий
Вы можете использовать JavaScript, не требуется библиотека jQuery:
Я использую что-то вроде:
Работает с дня экономии времени:
Работает с Нового года:
Это могут быть параметризованы:
В Mozilla Docs для setDate() Дон'т указать, что он будет обрабатывать конец месяца сценариев. См. https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date
setDate()
Именно поэтому я использую setTime (), когда мне нужно добавить дней.
Нет, в JavaScript нет встроенной функции, но вы можете использовать простую строку кода
Я думаю, что я'МР дать ответ, а также:<БР/> Лично мне нравится, чтобы попытаться избежать безвозмездное объявление переменной, метод звонками и вызова конструктора, так как все они дороже по производительности. (в пределах разумного, конечно)<БР/> Я собираюсь оставить это как просто комментарий под ответом @AnthonyWJones но одумались&.ЛТ;БР/>
Выше будет уважать ДСТ. То есть, если вы добавить количество дней, которые пересекают переход на летнее время, отображается время (час) изменится, чтобы отразить это.<БР/> Пример:<БР/> 2 ноября 2014 02:00 был конец летнего времени.
Если вы'вновь глядя сохранить время на летнее время (10.30, это все равно будет в 10:30)...<БР/>
Итак, теперь у вас есть...