Как я могу добавить 1 день к текущей дате? - PullRequest
54 голосов
/ 03 апреля 2012

У меня есть текущий объект Date, который нужно увеличить на один день с помощью объекта JavaScript Date. У меня есть следующий код:

var ds = stringFormat("{day} {date} {month} {year}", { 
                day: companyname.i18n.translate("day", language)[date.getUTCDay()], 
                date: date.getUTCDate(), 
                month: companyname.i18n.translate("month", language)[date.getUTCMonth()], 
                year: date.getUTCFullYear() 
});

Как я могу добавить один день к нему?

Я добавил +1 к getUTCDay() и getUTCDate(), но он не показывает «воскресенье» за day, чего я ожидаю.

Ответы [ 5 ]

152 голосов
/ 03 апреля 2012

Чтобы добавить один день к объекту даты:

var date = new Date();

// add a day
date.setDate(date.getDate() + 1);
27 голосов
/ 11 марта 2015

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

например 28 февраля или 31 марта.

Вот пример того, как я бы это сделал:

var current = new Date(); //'Mar 11 2015' current.getTime() = 1426060964567
var followingDay = new Date(current.getTime() + 86400000); // + 1 day in ms
followingDay.toLocaleDateString();

IMO это обеспечивает точность

вот еще один пример. Мне не нравится, что он может работать на вас, но не настолько чист, что доза выше

var today = new Date('12/31/2015');
var tomorrow = new Date(today);
tomorrow.setDate(today.getDate()+1);
tomorrow.toLocaleDateString();

imho this === 'POOP'

Таким образом, некоторые из вас были недовольны моим миллисекундным подходом из-за перехода на летнее время. Так что я собираюсь разобраться с этим. Во-первых, в некоторых странах и штатах нет дневного времени. Второе добавление ровно 24 часа - это полный день. Если доза числа даты не изменяется один раз в год, но затем устанавливается через 6 месяцев, я не вижу там проблемы. Но для того, чтобы быть определенным и иметь дело с выделением злого Date (), я продумал это до конца и теперь полностью ненавижу Date. Так что это мой новый подход

var dd = new Date(); // or any date and time you care about 
var dateArray =  dd.toISOString().split('T')[0].split('-').concat( dd.toISOString().split('T')[1].split(':') );
// ["2016", "07", "04", "00", "17", "58.849Z"] at Z 

Теперь самое интересное!

var date = { 
    day: dateArray[2],
    month: dateArray[1],
    year: dateArray[0],
    hour: dateArray[3],
    minutes: dateArray[4],
    seconds:dateArray[5].split('.')[0],
    milliseconds: dateArray[5].split('.')[1].replace('Z','')
}

теперь у нас есть официальный Действительный международный объект даты, четко выписанный на меридиане Зулу Теперь для изменения даты

  dd.setDate(dd.getDate()+1); // this gives you one full calendar date forward
  tomorrow.setDate(dd.getTime() + 86400000);// this gives your 24 hours into the future. do what you want with it.
7 голосов
/ 20 ноября 2015
int days = 1;
var newDate = new Date(Date.now() + days*24*60*60*1000);

CodePen

var days = 2;
var newDate = new Date(Date.now()+days*24*60*60*1000);

document.write('Today: <em>');
document.write(new Date());
document.write('</em><br/> New: <strong>');
document.write(newDate);
1 голос
/ 24 июня 2019

Если вы хотите добавить день (24 часа) к текущей дате и времени, вы можете добавить миллисекунды следующим образом:

new Date(Date.now() + ( 3600 * 1000 * 24))
0 голосов
/ 17 ноября 2018

Вдохновленный jpmottin в этот вопрос , вот код одной строки:

var dateStr = '2019-01-01';
var days = 1;

var result = new Date(new Date(dateStr).setDate(new Date(dateStr).getDate() + days));

document.write('Date: ', result); // Wed Jan 02 2019 09:00:00 GMT+0900 (Japan Standard Time)
document.write('<br />');
document.write('Trimmed Date: ', result.toISOString().substr(0, 10)); // 2019-01-02

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

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