Как получить 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. Это лучшее.
Ответы
Ответ 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).
Надеюсь, это кому-нибудь поможет.