Подтвердить что ты не робот

JavaScript: как рассчитать дату, которая была 2 дня назад?

Возможный дубликат:
Вычесть дни с даты в javascript

У меня есть JavaScript, который в основном возвращает дату, которая 2 дня назад. Это выглядит так:

var x;
var m_names = new Array("January", "February", "March", 
    "April", "May", "June", "July", "August", "September", 
    "October", "November", "December");

var d = new Date();
var twoDaysAgo = d.getDate()-2;  //change day here
var curr_month = d.getMonth();
var curr_year = d.getFullYear();
var x = twoDaysAgo + "-" + m_names[curr_month] + "-" + curr_year;

document.write(x);

Предполагая, что сегодня 12 декабря 2012 года, вышеуказанное вернет дату 10 декабря 2012 года. Я не думаю, что это будет работать динамично, когда мы продвигаемся вперед в новый месяц, ИЛИ, изменим день от -2 до -15. Он будет работать только с 3-го числа месяца.

Как я могу это изменить, когда сегодня 12 декабря 2012 года, и я хочу, чтобы он вернул мне дату 15 дней назад, это должно быть 27 ноября 2012 года... а не -3-Декабрь-2012?

Любая помощь оценивается. Благодарю! Я новичок в Javascript.

4b9b3361

Ответ 1

Если у вас есть объект даты, вы можете установить его на два дня раньше, вычитая два из даты:

var d = new Date();
d.setDate(d.getDate() - 2);
console.log(d.toString());

// First of month
var c = new Date(2017,1,1); // 1 Feb -> 30 Jan
c.setDate(c.getDate() - 2);
console.log(c.toString());

// First of year
var b = new Date(2018,0,1); // 1 Jan -> 30 Dec
b.setDate(b.getDate() - 2);
console.log(b.toString());

Ответ 2

Вы можете сделать следующее

​var date = new Date();
var yesterday = date - 1000 * 60 * 60 * 24 * 2;   // current date milliseconds - 1,000 ms * 60 s * 60 mins * 24 hrs * (# of days beyond one to go back)
yesterday = new Date(yesterday);
console.log(yesterday);​

Дата доступна в виде числа в миллисекундах, вы сегодня вычитаете два дня и создаете новую дату с использованием этого количества миллисекунд