web-dev-qa-db-fra.com

Comment se faire 30 jours avant la date du jour?

J'ai une zone de saisie du calendrier de début et une zone de saisie du calendrier de fin. Nous voulons que les valeurs par défaut commencent dans la zone de saisie du calendrier 30 jours avant la date actuelle et que la zone de saisie de la fin du calendrier soit la date actuelle. Voici mes vars de date.

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

La date de fin serait quelque chose comme var enddate = startdate - 30; Évidemment cela ne fonctionnera pas.

Donc, si la date du jour est le 30 décembre 2011, j'aimerais que la date de début soit lue le 1er décembre 2011.

EDIT: On a répondu à ma question… en quelque sorte. Date.today(); et Date.today().add(-30); fonctionnent, mais j’ai besoin de la date au format January 13, 2012. Non Fri Jan 13 2012 10:48:56 GMT -055 (EST). De l'aide?

PLUS ÉDIT: Au moment de la rédaction de cet article, nous sommes en 2018. Utilisez simplement Moment.js . C'est le meilleur.

69
Jesse Atkinson

Essayez d’utiliser l’excellente bibliothèque de dates JavaScript de Datejs (l’original n’est plus mis à jour, vous pouvez donc être intéressé par ce fork maintenu activement à la place):

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

[Modifier]

Voir aussi l'excellent Moment.js Bibliothèque de dates JavaScript :

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

Essaye ça

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

Comme noté par @Neel, cette méthode retourne au format Javascript Timestamp. Pour le reconvertir en objet Date, vous devez transmettre ce qui précède à un nouvel objet Date. new Date(priorDate).

119
Rory McCrossan

Voici une solution laide pour vous:

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

La méthode .getTime() renvoie un horodatage JS standard (millisecondes depuis le 1er janvier 1970) sur lequel vous pouvez utiliser des opérations mathématiques ordinaires, qui peuvent être directement renvoyées à l'objet Date.

34
Marc B

Javascript peut le gérer sans aucune bibliothèque externe. 

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

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

2
Freddy

Je préférerai moment js

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

endDate = moment().format('LL'); // February 28, 2015
1
Linoy.M.Kunjappan

J'utilise date.js . Il gère cela facilement et prend en charge toutes les méchancetés des années bissextiles.

Vous pouvez le faire simplement par 1 ligne de code en utilisant moment dans Node JS. :)

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

Ne veut pas le format UTC, PLUS FACILE: P

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

Facile.

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();
0
manish kumar

_ {Obtenez les 30 prochains jours à compter d'aujourd'hui} _

let now = new Date()
console.log(now)
let next30days = new Date(now.setDate(now.getDate() + 30))
console.log(next30days)

_ {Obtenir le formulaire des 30 derniers jours aujourd'hui}

let now = new Date()
console.log(now)
let last30days = new Date(now.setDate(now.getDate() - 30))
console.log(last30days)
0
WasiF

Ceci est une version ES6

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