Какой самый простой способ уменьшить дату в Javascript на 1 день? - PullRequest
17 голосов
/ 28 августа 2008

Мне нужно уменьшить дату Javascript на 1 день, чтобы она правильно откатывалась по месяцам / годам. То есть, если у меня есть дата «Сегодня», я хочу получить дату «Вчера».

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

Какой самый простой способ сделать это?

[Редактировать: просто чтобы избежать путаницы в ответе ниже, это JavaScript вопрос, а не вопрос Java.]

Ответы [ 7 ]

27 голосов
/ 28 августа 2008

var d = new Date();
d.setDate(d.getDate() - 1);

console.log(d);
5 голосов
/ 04 августа 2014
 day.setDate(day.getDate() -1); //will be wrong

это вернет не тот день. под UTC -03: 00, проверьте

var d = new Date(2014,9,19);
d.setDate(d.getDate()-1);// will return Oct 17

Лучше использовать:

var n = day.getTime();
n -= 86400000;
day = new Date(n); //works fine for everything
5 голосов
/ 28 августа 2008
var today = new Date();
var yesterday = new Date().setDate(today.getDate() -1);
3 голосов
/ 05 декабря 2013
origDate = new Date();
decrementedDate = new Date(origDate.getTime() - (86400 * 1000));

console.log(decrementedDate);
3 голосов
/ 28 августа 2008

getDate()-1 должен сделать трюк

Быстрый пример:

var day = new Date( "January 1 2008" );
day.setDate(day.getDate() -1);
alert(day);
1 голос
/ 10 декабря 2008

setDate(dayValue)

dayValue - это целое число от 1 до 31, представляющее день месяца.

из https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date/setDate

Поведение, решающее вашу проблему (и мою), кажется, выходит за пределы спецификации.

Кажется, что необходимы функции addDate (), addMonth (), addYear () ... *

0 голосов
/ 07 апреля 2018

Работа с датами в JS может быть головной болью. Поэтому самый простой способ - использовать moment.js для любых операций с датами.

Чтобы вычесть один день:

const date = moment().subtract(1, 'day')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...