У меня есть поле ввода начального календаря и поле ввода конечного календаря. Мы хотим, чтобы по умолчанию поле ввода календаря начиналось за 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 . Это лучшее.
javascript
jquery
Джесси Аткинсон
источник
источник
Ответы:
Попробуйте использовать отличную библиотеку дат Datejs JavaScript (оригинал больше не поддерживается, поэтому вам может быть интересна эта активно поддерживаемая вилка ):
Date.today().add(-30).days(); // or... Date.today().add({days:-30});
[Редактировать]
См. Также отличную библиотеку дат JavaScript Moment.js :
moment().subtract(30, 'days'); // or... moment().add(-30, 'days');
источник
moment( moment().subtract(30, 'days') ).format("YYYY-MM-DD")
moment()
подход и добавилtoDate()
метод, чтобы вернуть объект даты JavaScript. Благодарность!Попробуй это
var today = new Date() var priorDate = new Date().setDate(today.getDate()-30)
Как отмечает @Neel, этот метод возвращается в формате Javascript Timestamp. Чтобы преобразовать его обратно в объект даты, вам необходимо передать указанное выше в новый объект Date;
new Date(priorDate)
.источник
new Date(priorDate)
setDate()
наDate
объекте. Однако невозможно диагностировать, не видя своего кода.Вот вам неприятное решение:
var date = new Date(new Date().setDate(new Date().getDate() - 30));
источник
startDate = new Date(today.getTime() - 30*24*60*60*1000);
.getTime()
Метод возвращает стандартную JS метку времени (миллисекунды с января 1/1970) , на котором вы можете использовать регулярные математические операции, которые могут быть поданы в объект Date непосредственно.источник
Получите следующие 30 дней с сегодняшнего дня
let now = new Date() console.log('Today: ' + now.toUTCString()) let next30days = new Date(now.setDate(now.getDate() + 30)) console.log('Next 30th day: ' + next30days.toUTCString())
Получите последние 30 дней сегодня
let now = new Date() console.log('Today: ' + now.toUTCString()) let last30days = new Date(now.setDate(now.getDate() - 30)) console.log('Last 30th day: ' + last30days.toUTCString())
источник
Javascript может справиться с этим без каких-либо внешних библиотек.
var today = new Date(); var dateLimit = new Date(new Date().setDate(today.getDate() - 30)); document.write(today + "<br/>" + dateLimit)
источник
Легко.
(Using Vanilla JS)
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();
источник
let today = new Date()
let last30Days = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 30)
last30Days
будет в объекте датыисточник
Простой 1 лайнер ванильный код Javascript :
const priorByDays = new Date(Date.now() - days * 24 * 60 * 60 * 1000)
Например:
days = 7
предположить текущийdate = Fri Sep 18 2020 01:33:26 GMT+0530
Результат будет:
Fri Sep 11 2020 01:34:03 GMT+0530
отметка времени:
Date.now() - days * 24 * 60 * 60 * 1000
ISOString:
new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString()
источник
Я использую date.js . Он легко справляется с этим и устраняет все неприятности високосного года.
источник
Я предпочитаю момент js
startDate = moment().subtract(30, 'days').format('LL') // January 29, 2015 endDate = moment().format('LL'); // February 28, 2015
источник
Это версия ES6
let date = new Date() let newDate = new Date(date.setDate(date.getDate()-30)) console.log(newDate.getMonth()+1 + '/' + newDate.getDate() + '/' + newDate.getFullYear() )
источник
Вы можете сделать это просто с помощью одной строки кода, используя момент в Node JS. :)
let lastOneMonthDate = moment().subtract(30,"days").utc().toISOString()
Не хочу формат UTC, ПРОЩЕ: P
let lastOneMonthDate = moment().subtract(30,"days").toISOString()
источник
Если вы не склонны к momentjs, вы можете использовать это:
let x = new Date()
x.toISOString(x.setDate(x.getDate())).slice(0, 10)
Обычно он получает текущую дату (числовое значение даты текущего месяца), а затем устанавливает значение. Затем он преобразуется в формат ISO, из которого я нарезаю чисто числовую дату (например, 2019-09-23).
Надеюсь, это кому-то поможет.
источник