Ребята, помогите пожалуйста! Мне нужно в JavaScript уменьшить дату на один день. Причем так, чтобы правильно переходить через месяцы и годы. То есть, если у меня дата “сегодня”, я хочу получить “вчера”.
Каждый раз, когда я пытаюсь это сделать, получается слишком много кода. Может есть какой-то простой способ?
Буду благодарен за любые идеи! И да, речь именно о JavaScript, не о Java.
Можно использовать метод getTime() и вычесть из него количество миллисекунд в сутках. Примерно так:
const вчера = new Date(new Date().getTime() - 246060*1000);
Просто и работает. Правда, нужно быть осторожным с переходом на летнее/зимнее время. Но для большинства случаев такой подход вполне подойдет.
Самый простой способ - использовать Date.prototype.setDate() вместе с getDate(). Вот рабочий пример:
const date = new Date();
date.setDate(date.getDate() - 1);
Это уменьшит дату на 1 день, автоматически обрабатывая переходы через месяцы/годы. Никаких дополнительных проверок не нужно. JS сам корректно обработает все эти случаи.
Этот метод намного лучше, чем вручную считать дни в месяцах и високосные годы.
для этого есть простой способ - используй метод setDate(). он очень удобный, сам учитывает переходы между месяцами и годами. вот так это будет выглядеть:
const date = new Date(); // берем текущую дату
date.setDate(date.getDate() - 1); // уменьшаем на 1 день
и все, в переменной date теперь будет вчерашняя дата. никакой возни с проверками месяцев и прочего. JavaScript сам все посчитает правильно. я часто использую этот метод в своих проектах, очень выручает