Javascript Вчера

Как я могу рассчитать "вчерашний день" в JavaScript?

Ответ 1

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)

Ответ 2

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

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

Ответ 3

Не очень эффективно, но как oneliner:

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

Ответ 4

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

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

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

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

Ответ 5

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

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

это создает новый объект даты, основанный на значении "now" как целое число, которое представляет эпоху unix в миллисекундах, вычитая один день.

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

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

Час назад:

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

Ответ 6

//Create a date object using the current time
var now = new Date();

//Subtract one day from it
now.setDate(now.getDate()-1);

Ответ 7

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

var d = new Date();
d.setDate(d.getDate() - 1);
d.setTime(d.getTime()-d.getHours()*3600*1000-d.getMinutes()*60*1000);

Ответ 8

d.setHours(0,0,0,0);

выполнит трюк

Ответ 9

Попробуйте это, работает для меня:

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

Это дало мне объект даты за вчера