Рассчитать дату вчера в JavaScript - PullRequest
226 голосов
/ 01 апреля 2011

Как рассчитать вчера как дату в JavaScript?

Ответы [ 15 ]

374 голосов
/ 01 апреля 2011
var date = new Date();

date ; //# => Fri Apr 01 2011 11:14:50 GMT+0200 (CEST)

date.setDate(date.getDate() - 1);

date ; //# => Thu Mar 31 2011 11:14:50 GMT+0200 (CEST)
73 голосов
/ 01 апреля 2011

Не очень эффективно, но в качестве единственного:

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

Приведенное выше создает три Date объекта, которые излишне расточительны.Это можно уменьшить до одного экземпляра с помощью:

var yesterday = (function(){this.setDate(this.getDate()-1); return this})
                  .call(new Date)

Или, если вы предпочитаете:

var yesterday = (function(d){ d.setDate(d.getDate()-1); return d})(new Date)

Или, если вы предпочитаете ES6 с функцией стрелки:

let yesterday = ( d => new Date(d.setDate(d.getDate()-1)) )(new Date);
60 голосов
/ 01 апреля 2011

Попробуйте это

var d = new Date();
d.setDate(d.getDate() - 1);
51 голосов
/ 04 мая 2016

Удивительно, но нет ответа на самое простое кросс-браузерное решение

Чтобы найти точно такое же время вчера:

var yesterday = new Date(Date.now() - 86400000); // that is: 24 * 60 * 60 * 1000

То есть, если вы хотите избавиться от зависимости, иначе я бы порекомендовал использовать http://momentjs.com

17 голосов
/ 29 мая 2014

Чтобы обобщить вопрос и сделать другие вычисления различий, используйте:

var yesterday = new Date((new Date()).valueOf() - 1000*60*60*24);

это создает новый объект даты, основанный на значении «сейчас» в виде целого числа, которое представляет эпоху Unix в миллисекундах с вычитанием одного дня.

Два дня назад:

var twoDaysAgo = new Date((new Date()).valueOf() - 1000*60*60*24*2);

час назад:

var oneHourAgo = new Date((new Date()).valueOf() - 1000*60*60);
7 голосов
/ 10 мая 2018

Я использую момент библиотека, она очень гибкая и простая в использовании.

В вашем случае:

let yesterday = moment().add(-1, 'day').toDate();

====== ОБНОВЛЕНИЕ ======

let yesterday = moment().subtract(1, 'day').toDate();
7 голосов
/ 01 апреля 2011
//Create a date object using the current time
var now = new Date();

//Subtract one day from it
now.setDate(now.getDate()-1);
5 голосов
/ 05 декабря 2013

Это даст вчера в 00:00 с точностью до минуты

var d = new Date();
d.setDate(d.getDate() - 1);
d.setTime(d.getTime()-d.getHours()*3600*1000-d.getMinutes()*60*1000);
3 голосов
/ 09 августа 2018
new Date(new Date().setDate(new Date().getDate()-1))
2 голосов
/ 11 февраля 2019

var today = new Date();
var yesterday1 = new Date(new Date().setDate(new Date().getDate() - 1));
var yesterday2 = new Date(Date.now() - 86400000);
var yesterday3 = new Date(Date.now() - 1000*60*60*24);
var yesterday4 = new Date((new Date()).valueOf() - 1000*60*60*24);
console.log("Today: "+today);
console.log("Yesterday: "+yesterday1);
console.log("Yesterday: "+yesterday2);
console.log("Yesterday: "+yesterday3);
console.log("Yesterday: "+yesterday4);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...