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

Как получить 30 дней до текущей даты?

У меня есть поле ввода начального календаря и поле ввода конечного календаря. Мы хотим, чтобы по умолчанию поле ввода календаря начиналось за 30 дней до текущей даты, а поле ввода календаря конца должно быть текущей датой. Вот мое свидание

var today = new Date(),
    dd    = today.getDate(),
    mm    = today.getMonth(),
    yyyy  = today.getFullYear(),
    month = ["January", "February", "March",
        "April", "May", "June", "July", "August",
        "September", "October" "November", "December"],
    startdate = month[mm] + ", " + yyyy.toString();

Дата окончания будет выглядеть примерно так: var enddate = startdate - 30; Очевидно, это не сработает.

Поэтому, если текущая дата - 30 декабря 2011 г., я бы хотел, чтобы начальная дата читалась 1 декабря 2011 г.

РЕДАКТИРОВАТЬ: На мой вопрос был дан ответ... вроде. Date.today(); и Date.today().add(-30); работа но мне нужна дата в формате January 13, 2012. Не Fri Jan 13 2012 10:48:56 GMT -055 (EST). Любая помощь?

БОЛЬШЕ РЕДАКТИРОВАТЬ: На момент написания статьи это 2018. Просто используйте Moment.js. Это лучшее.

4b9b3361

Ответ 1

Попробуйте использовать отличную Datejs JavaScript date library (оригинал больше не поддерживается, поэтому вы можете быть заинтересованы в это активно поддерживается fork):

Date.today().add(-30).days(); // or...
Date.today().add({days:-30});

[изменить]

См. также отличную Moment.js JavaScript date:

moment().subtract(30, 'days'); // or...
moment().add(-30, 'days');

Ответ 2

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

var today = new Date()
var priorDate = new Date().setDate(today.getDate()-30)

Как отмечено @Neel, этот метод возвращается в формате Timestamp в формате Javascript. Чтобы преобразовать объект назад в дату, вам необходимо передать это значение новому объекту Date; new Date(priorDate).

Ответ 3

Здесь уродливое решение для вас:

var date = new Date(new Date().setDate(new Date().getDate() - 30));

Ответ 4

startDate = new Date(today.getTime() - 30*24*60*60*1000);

Метод .getTime() возвращает стандартную временную метку JS (миллисекунды с января 1/1970), на которой вы можете использовать регулярные математические операции, которые могут быть возвращены непосредственно к объекту Date.

Ответ 5

Javascript может справиться с этим без каких-либо внешних библиотек.

var today = new Date();
var dateLimit = new Date(new Date().setDate(today.getDate() - 30));

document.write(today + "<br/>" + dateLimit)

Ответ 6

Получите следующие 30 дней с сегодняшнего дня

let now = new Date()
console.log('Today: ' + now.toUTCString())
let next30days = new Date(now.setDate(now.getDate() + 30))
console.log('Next: ' + next30days.toUTCString())

Ответ 7

Я использую date.js. Он легко справляется с этим и заботится обо всех високосных гадах.

Ответ 8

Я предпочту момент js

startDate = moment().subtract(30, 'days').format('LL')  // January 29, 2015

endDate = moment().format('LL'); // February 28, 2015

Ответ 9

Легко.

let days=30;
this.maxDateTime = new Date(Date.now() - days * 24 * 60 * 60 * 1000);

ISOFormat?

let days=30;
this.maxDateTime = new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString();

Ответ 10

Это версия ES6

let date = new Date()
let newDate = new Date(date.setDate(date.getDate()-30))
console.log(newDate.getMonth()+1 + '/' + newDate.getDate() + '/' + newDate.getFullYear() )

Ответ 11

Вы можете сделать это просто через 1 строку кода, используя момент в Node JS. :)

    let lastOneMonthDate = moment().subtract(30,"days").utc().toISOString()

Не хочу формат UTC, ЛЕГКО: P

    let lastOneMonthDate = moment().subtract(30,"days").toISOString()

Ответ 12

Если вы не склонны к тому, чтобы воспользоваться моментами, вы можете использовать это:

let x = new Date()

x.toISOString(x.setDate(x.getDate())).slice(0, 10)

В основном он получает текущую дату (числовое значение даты текущего месяца), а затем устанавливает значение. Затем он преобразуется в формат ISO, из которого я сокращаю чистую числовую дату (т.е. 2019-09-23).

Надеюсь, это кому-нибудь поможет.