Ответ 1
var d = new Date();
d.setDate(d.getDate() - 1);
console.log(d);
Мне нужно уменьшить дату Javascript на 1 день, чтобы она вернулась через месяцы/годы правильно. То есть, если у меня есть дата "Сегодня", я хочу получить дату "Вчера".
Кажется, что когда я делаю это, мне кажется, что требуется больше кода, чем необходимо, поэтому я задаюсь вопросом, есть ли простой способ.
Какой самый простой способ сделать это?
[Изменить: просто, чтобы избежать путаницы в ответе ниже, это вопрос JavaScript, а не один Java.]
var d = new Date();
d.setDate(d.getDate() - 1);
console.log(d);
var today = new Date();
var yesterday = new Date().setDate(today.getDate() -1);
getDate()-1
должен сделать трюк
Быстрый пример:
var day = new Date( "January 1 2008" );
day.setDate(day.getDate() -1);
alert(day);
origDate = new Date();
decrementedDate = new Date( sDate.getTime() - ( 86400 * 1000 ));
console.log(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
setDate(dayValue)
dayValue
- целое число от 1 до 31, представляющее день месяца.
from https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date/setDate
Поведение, решающее вашу проблему (и мое), кажется, выходит за пределы спецификации.
Кажется, что нужны функции addDate(), addMonth(), addYear()...