Как добавить дни к текущему Date
с помощью JavaScript. Есть ли в JavaScript встроенная функция, подобная .Net AddDay
?
javascript
date
datetime
time
Ashesh
источник
источник
Date.prototype.addDays=function(d){return new Date(this.valueOf()+864E5*d);};
864E5
по какой-то причине я предпочитаю писать24*60*60
в своем коде :)Правильный ответ :
Неверный ответ :
Этот ответ иногда дает правильный результат, но очень часто возвращает неправильный год и месяц. Единственный раз, когда этот ответ работает, когда дата, к которой вы добавляете дни, совпадает с текущим годом и месяцем.
Доказательство / Пример
Проверьте это JsFiddle
Показать фрагмент кода
источник
Будьте осторожны, потому что это может быть сложно. При установке «завтра», это работает только потому, что его текущее значение соответствует году и месяцу для «сегодня». Однако установка числа даты, такого как «32», обычно все равно будет работать, чтобы перенести его на следующий месяц.
источник
var d = new Date(); d.setDate( d.getDate() + 1 );
?getDate()
возвращает день этого года . Затем вызовsetDate
устанавливает день в текущем году . Так что это НЕ хорошее общее решение. Ответ @ AnthonyWJones на самом деле работает правильно.var d = new Date(2015,11,30);d.setDate(d.getDate() + 370)
дает 3 января 2017 года, который пересекает 2 года.Мое простое решение:
Это решение не имеет проблемы с переходом на летнее время. Кроме того, можно добавить / суб любое смещение для лет, месяцев, дней и т. Д.
правильный код
источник
setDate
.Эти ответы кажутся мне запутанными, я предпочитаю:
getTime () дает нам миллисекунды с 1970 года, а 86400000 - это количество миллисекунд в день. Следовательно, ms содержит миллисекунды для желаемой даты.
Использование миллисекундного конструктора дает желаемый объект даты.
источник
new Date(new Date('11/4/2012').getTime() + 86400000)
Пытаться
Использование setDate () для добавления даты не решит вашу проблему, попробуйте добавить несколько дней в февраль месяц, если вы попытаетесь добавить к нему новые дни, это не приведет к тому, что вы ожидали.
источник
setDate()
? Это так: stackoverflow.com/questions/5497637/…Просто потратил целую вечность, пытаясь понять, что за сделка с годом не складывалась, если следовать приведенным ниже примерам.
Если вы хотите просто добавить n дней к вашей дате, лучше всего пойти:
или длинная версия
Это сегодня / завтра вещи сбивают с толку. Установив текущую дату в новую переменную даты, вы запутаете значение года. если вы работаете с первоначальной даты, вы не будете.
источник
Если можете, используйте moment.js . JavaScript не имеет очень хороших собственных методов даты / времени. Ниже приведен пример синтаксиса Moment:
Ссылка: http://momentjs.com/docs/#/manipulation/add/
источник
CodePen
источник
Я создал эти расширения вчера вечером:
вы можете передавать как положительные, так и отрицательные значения;
пример:
источник
Не используя вторую переменную, вы можете заменить 7 на следующие x дней:
источник
вычесть 30 дней использования (24 часа = 86400000 мс)
Показать фрагмент кода
источник
Самое простое решение.
источник
Решение, разработанное для оператора трубопровода :
Применение:
Если вам нужно больше функциональности, я предлагаю заглянуть в библиотеку date-fns .
источник
Спасибо Джейсону за ваш ответ, который работает, как и ожидалось, вот сочетание вашего кода и удобного формата AnthonyWJones:
источник
Поздно на вечеринке,
но если вы используете,есть отличный плагин под названием Момент:jQuery
тоhttp://momentjs.com/
http://momentjs.com/docs/#/manipulating/
И много других хороших вещей там!
Редактировать: ссылка на jQuery удалена благодаря комментарию aikeru
источник
Старый я знаю, но иногда мне нравится это:
источник
Date.prototype.addDays = function(days) {return new Date(this.getTime() + (864e5 * days));};
У меня были проблемы с переходом на летнее время с предложенным решением.
Используя
getUTCDate
/setUTCDate
вместо этого, я решил свою проблему.источник
Вы можете использовать JavaScript, JQuery не требуется:
источник
Общий прототип без переменных, он применяется к существующему значению Date:
источник
Документы mozilla для setDate () не указывают, что он будет обрабатывать сценарии на конец месяца. См. Https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date.
SETDATE ()
Вот почему я использую setTime (), когда мне нужно добавить дни.
источник
Так просто, как это:
источник
Полагаю, я также дам ответ:
лично я хотел бы попытаться избежать необоснованного объявления переменных, вызовов методов и вызовов конструктора, поскольку все они дороги в производительности. (в пределах разумного, конечно)
Я собирался оставить это как просто комментарий под Ответом, данным @AnthonyWJones, но думал об этом лучше.
Выше будет уважать DST. Это означает, что если вы добавите количество дней, пересекающих DST, отображаемое время (часы) изменится, чтобы отразить это.
Пример:
2 ноября 2014 г. 02:00 был конец летнего времени.
Если вы хотите сохранить время по летнему времени (10:30 все равно будет 10:30) ...
Итак, теперь у вас есть ...
источник
Нет, в javascript нет встроенной функции, но вы можете использовать простую строку кода
источник
Я использую что-то вроде:
Работает с экономией времени:
Работает с новым годом:
Это может быть параметризовано:
источник
Я использую следующее решение.
Date имеет конструктор, который принимает int. Этот аргумент представляет общее количество миллисекунд до / после 1 января 1970 года. Он также имеет метод setTime, который делает то же самое, не создавая новый объект Date.
Здесь мы конвертируем дни в миллисекунды и добавляем это значение к значению, предоставленному getTime. Наконец, мы передаем результат конструктору Date (миллисекунды) или методу setTime (миллисекунды).
источник
now.setDate(now.getDate() + days);
автоматически обрабатывает изменения летнего времени. И я должен исправить, високосные секунды игнорируются в метках времени JS.Изменить: Вместо
setTime()
(илиsetHours()
) вы можете сделать это следующим образом:Старый:
Вместо использования
setTime()
вы можете использоватьsetHours()
:Смотрите JSFiddle ...
источник
d.setDate(d.getDate() + 1);
Очень простой код для добавления дней в дате в сценарии Java.
источник
Есть setDate и метод getDate , которые позволяют вам делать что-то вроде этого:
Если вы хотите вычесть количество дней и отформатировать дату в удобочитаемом формате, вам следует рассмотреть возможность создания пользовательского
DateHelper
объекта, который выглядит примерно так:(см. также эту скрипку )
источник
Расширение прототипа в JavaScript не может быть хорошей идеей , особенно в профессиональных кодовых базах.
Что вы хотите сделать, это расширить родной
Date
класс:Таким образом, если однажды Javascript реализует нативный
addDays
метод, вы ничего не сломаете.источник