Какой самый простой способ уменьшить дату в Javascript на 1 день?

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

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

Как это сделать проще всего?

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

Вот функция, которая может как увеличивать, так и уменьшать: stackoverflow.com/a/29199863/4021614

Jonathan Herman 23.03.2015 00:11
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
21
1
12 487
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

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 октября

Sunil B N 04.08.2014 12:14

он также возвращает неправильный год. new Date (new Date (). getDate () - 1) возвращает для меня 1969 год

Sonic Soul 22.05.2015 18:05

Это вообще не уменьшает дату, когда я запускаю фрагмент кода.

DaveS 23.06.2019 04:42

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')

Другие вопросы по теме