Добавить дни в JavaScript Date - PullRequest
       119

Добавить дни в JavaScript Date

889 голосов
/ 19 февраля 2009

Как добавить дни к текущему Date, используя JavaScript. Есть ли в JavaScript встроенная функция, например .Net * AddDay?

Ответы [ 40 ]

4 голосов
/ 09 апреля 2015

Изменить: Вместо 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 ...

4 голосов
/ 27 января 2015

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

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 (в миллисекундах).

4 голосов
/ 21 сентября 2016

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

var d = new Date();
d.setDate(d.getDate() + prompt('how many days you want to add write here'));
alert(d);
3 голосов
/ 06 июня 2017

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

const newDate = DateFns.addDays(oldDate, 2);
3 голосов
/ 14 июля 2018

Вы можете использовать JavaScript, JQuery не требуется:

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;
3 голосов
/ 26 ноября 2018

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

Date.prototype.addDays = function (days) {
    return new Date(this.valueOf() + days * 864e5);
}
3 голосов
/ 16 апреля 2018

Есть setDate и getDate метод, который позволяет вам сделать что-то вроде этого:

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

Если вы хотите вычесть количество дней и отформатировать дату в удобочитаемом формате, вам следует подумать о создании пользовательского 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));

(см. Также эту скрипку )

2 голосов
/ 22 ноября 2017

попробуйте

function addDays(date,days) {        
      var one_day=1000*60*60*24; 
      return new Date(date.getTime()+(days*one_day)).toLocaleDateString(); 
    }
2 голосов
/ 28 декабря 2013
    //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"
2 голосов
/ 02 июля 2015

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

Просто сделай:

$scope.booking.totTijd.setMinutes($scope.booking.totTijd.getMinutes()+15);
$scope.booking.totTijd.setDate($scope.booking.totTijd.getDate() + 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...