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.
Ответы
Ответ 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);
Дата доступна в виде числа в миллисекундах, вы сегодня вычитаете два дня и создаете новую дату с использованием этого количества миллисекунд