Как получить 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 года.

EDIT: на мой вопрос был дан ответ... что-то вроде того. Date.today(); и Date.today().add(-30); работать, но мне нужна дата в формате January 13, 2012. Не Fri Jan 13 2012 10:48:56 GMT -055 (EST). Какая-нибудь помощь?

more EDIT: на момент написания этой статьи это 2018 год. Просто используйте момент.js. Это самое лучшее.

9 62

9 ответов:

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

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

[Edit]

Смотрите также отличный момент.дата и JS библиотека JavaScript:

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

попробуй такое

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

Как отметил @Neel, этот метод возвращает в формате метки времени Javascript. Чтобы преобразовать его обратно в объект даты, вам нужно передать выше в новый объект даты;new Date(priorDate).

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

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

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

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

Я предпочитаю момент js

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

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

Javascript может обрабатывать его без каких-либо внешних библиотек.

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

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

легко.

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();

Это версия ES6

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