Javascript получить timestamp 1 месяц назад

Как я могу получить временную метку unix того времени 1 месяц назад с этого момента?

Я знаю, что мне нужно использовать Date()

Ответ 1

Упрощенный ответ:

// Get a date object for the current time
var d = new Date();

// Set it to one month ago
d.setMonth(d.getMonth() - 1);

// Zero the hours
d.setHours(0, 0, 0);

// Zero the milliseconds
d.setMilliseconds(0);

// Get the time value in milliseconds and convert to seconds
console.log(d/1000|0);

Обратите внимание, что если вы вычтите один месяц с 31 июля, вы получите 31 июня, который будет конвертирован в 1 июля. аналогичным образом 31 марта пойдет на 31 февраля, который будет конвертироваться 2 или 3 марта в зависимости от того, будет ли он в високосный год или нет.

Итак, вам нужно проверить месяц:

var d = new Date();
var m = d.getMonth();
d.setMonth(d.getMonth() - 1);

// If still in same month, set date to last day of 
// previous month
if (d.getMonth() == m) d.setDate(0);
d.setHours(0, 0, 0);
d.setMilliseconds(0);

// Get the time value in milliseconds and convert to seconds
console.log(d / 1000 | 0);

Обратите внимание, что значения времени JavaScript указаны в миллисекундах с 1970-01-01T00: 00: 00Z, тогда как значения времени UNIX находятся в секундах с той же эпохи, следовательно, деление на 1000.

Ответ 2

Вы можете взглянуть на Moment.JS. Он имеет множество полезных методов, связанных с датой.

Вы можете сделать:

moment().subtract('months', 1).unix()

Ответ 3

var d = new Date();

И установите месяц до месяца. (Edited)

d.setMonth(d.getMonth()-1);