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