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

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

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

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

Ответы [ 40 ]

1 голос
/ 17 августа 2014

Не могу поверить, что в этой теме нет решения по нарезке пасты после 5 лет!
SO: Чтобы получить одинаковое время суток независимо от летних помех:

Date.prototype.addDays = function(days)
    {
    var dat = new Date( this.valueOf() )

    var hour1 = dat.getHours()
    dat.setTime( dat.getTime() + days * 86400000) // 24*60*60*1000 = 24 hours
    var hour2 = dat.getHours()

    if (hour1 != hour2) // summertime occured +/- a WHOLE number of hours thank god!
        dat.setTime( dat.getTime() + (hour1 - hour2) * 3600000) // 60*60*1000 = 1 hour

    return dat
or
    this.setTime( dat.getTime() ) // to modify the object directly
    }

Там. Готово!

1 голос
/ 25 февраля 2017

Вы можете создать свою собственную вспомогательную функцию здесь

function plusToDate(currentDate, unit, howMuch) {

    var config = {
        second: 1000, // 1000 miliseconds
        minute: 60000,
        hour: 3600000,
        day: 86400000,
        week: 604800000,
        month: 2592000000, // Assuming 30 days in a month
        year: 31536000000 // Assuming 365 days in year
    };

    var now = new Date(currentDate);

    return new Date(now + config[unit] * howMuch);
}

var today = new Date();
var theDayAfterTommorow = plusToDate(today, 'day', 2);

Кстати, это общее решение для добавления секунд, минут или дней, что вы хотите.

1 голос
/ 22 декабря 2013

Я использовал этот подход, чтобы получить правильную дату в одной строке, чтобы получить время плюс один день после того, что люди говорили выше.

((new Date()).setDate((new Date()).getDate()+1))

Я просто подумал, что построю нормальный (new Date()):

(new Date()).getDate()
> 21

Используя приведенный выше код, теперь я могу установить все это в пределах Date() в (new Date()), и он будет вести себя нормально.

(new Date(((new Date()).setDate((new Date()).getDate()+1)))).getDate()
> 22

или для получения объекта Date:

(new Date(((new Date()).setDate((new Date()).getDate()+1))))
1 голос
/ 20 августа 2017
function addDays(n){
    var t = new Date();
    t.setDate(t.getDate() + n); 
    var month = "0"+(t.getMonth()+1);
    var date = "0"+t.getDate();
    month = month.slice(-2);
    date = date.slice(-2);
     var date = date +"/"+month +"/"+t.getFullYear();
    alert(date);
}

addDays(5);
0 голосов
/ 07 мая 2019

чтобы вычесть 30 дней использования

new Date(+yourDate - 30 *86400000)

var yourDate=new Date();
var d = new Date(+yourDate - 30 *86400000)

console.log(d)
0 голосов
/ 05 октября 2012

тот же ответ: Как добавить количество дней к сегодняшней дате?

    function DaysOfMonth(nYear, nMonth) {
        switch (nMonth) {
            case 0:     // January
                return 31; break;
            case 1:     // February
                if ((nYear % 4) == 0) {
                    return 29;
                }
                else {
                    return 28;
                };
                break;
            case 2:     // March
                return 31; break;
            case 3:     // April
                return 30; break;
            case 4:     // May
                return 31; break;
            case 5:     // June
                return 30; break;
            case 6:     // July
                return 31; break;
            case 7:     // August
                return 31; break;
            case 8:     // September
                return 30; break;
            case 9:     // October
                return 31; break;
            case 10:     // November
                return 30; break;
            case 11:     // December
                return 31; break;
        }
    };

    function SkipDate(dDate, skipDays) {
        var nYear = dDate.getFullYear();
        var nMonth = dDate.getMonth();
        var nDate = dDate.getDate();
        var remainDays = skipDays;
        var dRunDate = dDate;

        while (remainDays > 0) {
            remainDays_month = DaysOfMonth(nYear, nMonth) - nDate;
            if (remainDays > remainDays_month) {
                remainDays = remainDays - remainDays_month - 1;
                nDate = 1;
                if (nMonth < 11) { nMonth = nMonth + 1; }
                else {
                    nMonth = 0;
                    nYear = nYear + 1;
                };
            }
            else {
                nDate = nDate + remainDays;
                remainDays = 0;
            };
            dRunDate = Date(nYear, nMonth, nDate);
        }
        return new Date(nYear, nMonth, nDate);
    };
0 голосов
/ 08 января 2019

js-joda - это удивительная неизменяемая библиотека даты и времени для javascript. Это порт Java-8 DateTime ( JSR-310 ), который является преемником знаменитой библиотеки Joda-Time . Вот выдержка из его шпаргалки.

Добавьте 17 дней к сегодняшнему дню

LocalDate.now().plusDays(17); 

Вы также можете построить желаемую дату с нескольких операций одновременно.

LocalDate.now()
  .plusMonths(1)
  .withDayOfMonth(1)
  .minusDays(17); 

Или:

var d = LocalDate.parse('2019-02-23'); 
d.minus(Period.ofMonths(3).plusDays(3)); // '2018-11-20'
0 голосов
/ 04 мая 2016

2,39 КБ минимизировано. Один файл. https://github.com/rhroyston/clock-js

console.log(clock.what.weekday(clock.now + clock.unit.days)); //"wednesday"
console.log(clock.what.weekday(clock.now + (clock.unit.days * 2))); //"thursday"
console.log(clock.what.weekday(clock.now + (clock.unit.days * 3))); //"friday"
<script src="https://raw.githubusercontent.com/rhroyston/clock-js/master/clock.min.js"></script>
0 голосов
/ 29 июля 2014

Я суммирую часы и дни ...

Date.prototype.addDays = function(days){
    days = parseInt(days, 10)
    this.setDate(this.getUTCDate() + days);
    return this;
}

Date.prototype.addHours = function(hrs){
    var hr = this.getUTCHours() + parseInt(hrs  , 10);
    while(hr > 24){
      hr = hr - 24;
      this.addDays(1);
    }

    this.setHours(hr);
    return this;
}
0 голосов
/ 23 июня 2018

Самый простой способ сделать это - использовать библиотеку date-fns .

var addDays = require('date-fns/add_days')
addDays(date, amount)

Документация доступна по этой ссылке здесь . Вы также можете сделать это, используя moment.js . Ссылочная ссылка здесь

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...