Мне нужно уменьшить дату Javascript на 1 день, чтобы она правильно откатывалась через месяцы / годы. То есть, если у меня есть дата «Сегодня», я хочу получить дату «Вчера».
Когда я это делаю, всегда кажется, что требуется больше кода, чем необходимо, поэтому мне интересно, есть ли более простой способ.
Как это сделать проще всего?
[Обновлено: чтобы избежать путаницы в ответе ниже, это вопрос JavaScript, а не Java.]



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


var today = new Date();
var yesterday = new Date().setDate(today.getDate() -1);
var d = new Date();
d.setDate(d.getDate() - 1);
console.info(d);это вернется не в тот день. под UTC -03: 00 проверьте var d = new Date (2014,9,19) d.setDate (d.getDate () - 1); // вернет 17 октября
он также возвращает неправильный год. new Date (new Date (). getDate () - 1) возвращает для меня 1969 год
Это вообще не уменьшает дату, когда я запускаю фрагмент кода.
getDate()-1 должен помочь
Быстрый пример:
var day = new Date( "January 1 2008" );
day.setDate(day.getDate() -1);
alert(day);
setDate(dayValue)
dayValue - целое число от 1 до 31, представляющее день месяца.
от https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date/setDate
Поведение, решающее вашу проблему (и мою), похоже, выходит за рамки спецификации.
Похоже, что необходимы функции addDate (), addMonth (), addYear () ...
origDate = new Date();
decrementedDate = new Date(origDate.getTime() - (86400 * 1000));
console.info(decrementedDate);
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
Работа с датами в JS может быть головной болью. Итак, самый простой способ - использовать moment.js для любых операций с датами.
Чтобы вычесть один день:
const date = moment().subtract(1, 'day')
Вот функция, которая может как увеличивать, так и уменьшать: stackoverflow.com/a/29199863/4021614