Подтвердить что ты не робот

Добавьте один день в javascript

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

var startDate = new Date(Date.parse(startdate));
//The start date is right lets say it is 'Mon Jun 30 2014 00:00:00'

var endDate = new Date(startDate.getDate() + 1);
// the enddate in the console will be 'Wed Dec 31 1969 18:00:00' and that wrong it should be  1 july 

Я знаю, что .getDate() возвращается с 1-31, но увеличивает ли браузер или javascript только день без обновления месяца и года?

и в этом случае Должен ли я написать алгоритм для обработки этого? или есть другой способ?

4b9b3361

Ответ 1

Обратите внимание, что Date.getDate возвращает только день месяца. Вы можете добавить день, вызвав Date.setDate и добавив 1.

// Create new Date instance
var date = new Date()

// Add a day
date.setDate(date.getDate() + 1)

JavaScript автоматически обновит месяц и год для вас.

EDIT:
Здесь ссылка на страницу, где вы можете найти все интересные вещи о встроенном объекте Date, и посмотреть, что возможно: Date.

Ответ 2

Конструктор Date, который принимает одно число, ожидает число миллисекунд с 31 декабря 1969 года.

Date.getDate() возвращает индекс дня для текущего объекта даты. В вашем примере день 30. Окончательное выражение 31, поэтому оно возвращает 31 миллисекунду после 31 декабря 1969 года.

Простым решением, использующим ваш существующий подход, является использование Date.getTime(). Затем добавьте количество дней в миллисекундах вместо 1.

Например,

var dateString = 'Mon Jun 30 2014 00:00:00';

var startDate = new Date(dateString);

// seconds * minutes * hours * milliseconds = 1 day 
var day = 60 * 60 * 24 * 1000;

var endDate = new Date(startDate.getTime() + day);

JSFiddle

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

Ответ 3

Я думаю, что вы ищете:

startDate.setDate(startDate.getDate() + 1);

Кроме того, вы можете посмотреть Moment.js

Библиотека дат javascript для синтаксического анализа, проверки, управления и форматирования.

Ответ 4

Есть вопрос 31 и 28 февраля с getDate() Я использую эту функцию getTime и 24*60*60*1000 = 86400000

var dateWith31 = new Date("2017-08-31");
var dateWith29 = new Date("2016-02-29");

var amountToIncreaseWith = 1; //Edit this number to required input

console.log(incrementDate(dateWith31,amountToIncreaseWith));
console.log(incrementDate(dateWith29,amountToIncreaseWith));

function incrementDate(dateInput,increment) {
        var dateFormatTotime = new Date(dateInput);
        var increasedDate = new Date(dateFormatTotime.getTime() +(increment *86400000));
        return increasedDate;
    }

Ответ 5

var datatoday = new Date();
var datatodays = datatoday.setDate(new Date(datatoday).getDate() + 1);
todate = new Date(datatodays);
console.log(todate);

Это поможет вам...

Ответ 6

Если вы не против использовать библиотеку, DateJS (https://github.com/abritinthebay/datejs/) сделает это довольно легко. Вероятно, вам будет лучше с одним из ответов с использованием ванильного JavaScript, если вы не воспользуетесь некоторыми другими функциями DateJS, такими как синтаксический анализ необычно отформатированных дат.

Если вы используете DateJS, строка вроде этого должна сделать трюк:

Date.parse(startdate).add(1).days();

Вы также можете использовать MomentJS, который имеет похожие функции (http://momentjs.com/), однако я не так хорошо знаком с ним.

Ответ 7

используйте это, я думаю, это полезно для вас

var endDate=startDate.setDate(startDate.getDate() + 1);

Ответ 8

Просто для добавления функций в прототип Date:

В изменчивом стиле/стиле:

Date.prototype.addDays = function(n) {
   this.setDate(this.getDate() + n);
};

// Can call it tomorrow if you want
Date.prototype.nextDay = function() {
   this.addDays(1);
};

Date.prototype.addMonths = function(n) {
   this.setMonth(this.getMonth() + n);
};

Date.prototype.addYears = function(n) {
   this.setFullYear(this.getFullYear() + n);
}

// etc...

var currentDate = new Date();
currentDate.nextDay();