web-dev-qa-db-fra.com

Trouver une date en soustrayant X nombre de jours d'une date donnée en Javascript

Je veux trouver la date en soustrayant X nombre de jours d'une date particulière en JavaScript. Ma fonction JavaScript accepte 2 paramètres. L'une correspond à la date et l'autre au nombre de jours à soustraire.

Par exemple, je passe la date de mon argument au 27 juillet 2009 et mon autre argument à 3. Je veux donc calculer la date 3 jours avant le 27 juillet 2009. La date résultante que nous devrions obtenir est donc le 24 juillet 2009. Comment cela est possible en JavaScript. Merci pour toute aide.

47
ajithmanmu

Simplement:

yourDate.setDate(yourDate.getDate() - daysToSubtract);
81
Daniel F. Thornton
function date_by_subtracting_days(date, days) {
    return new Date(
        date.getFullYear(), 
        date.getMonth(), 
        date.getDate() - days,
        date.getHours(),
        date.getMinutes(),
        date.getSeconds(),
        date.getMilliseconds()
    );
}
22
neoneye

Ne choisissez jamais cette solution.

cela ne fonctionnera pas si votre date est le 1er de chaque mois et que vous souhaitez supprimer quelques jours, par exemple 1.

Au lieu d'aller pour la solution ci-dessous qui fonctionnera toujours

var newDate = new Date (yourDate.getTime () - (days * 24 * 60 * 60 * 1000));

9
Keshav Mukati

Ici, je poste une réponse de plus et je retournerai la date dans un format spécifique.

D'abord, vous pouvez obtenir la date du jour 10/08/2013 comme ci-dessous

function Cureent_Date() {
    var today_GMT = new Date();
    var dd = today_GMT.getDate();
    var mm = today_GMT.getMonth() + 1; //January is 0!
    var yyyy = today_GMT.getFullYear();
    if (dd < 10) {
        dd = '0' + dd
    }
    if (mm < 10) {
        mm = '0' + mm
    }
    current_date = mm + '/' + dd + '/' + yyyy;
    alert("current_date"+current_date);

    Back_date();
}

Récupère maintenant la base de date sur X jours

function Back_date()
{    
    var back_GTM = new Date(); back_GTM.setDate(back_GTM.getDate() - 2); // 2 is your X
    var b_dd = back_GTM.getDate();
    var b_mm = back_GTM.getMonth()+1;
    var b_yyyy = back_GTM.getFullYear();
    if (b_dd < 10) {
        b_dd = '0' + b_dd
    }
    if (b_mm < 10) {
        b_mm = '0' +b_mm
    }

    var back_date=  b_mm + '/' + b_dd + '/' + b_yyyy;
    alert("back_date"+back_date);
}

Donc, Today est 10/08/2013 donc il retournera 10/06/2013.

Voir démo en direct ici J'espère que cette réponse vous aidera.

2
Chintan Khetiya

Voici un exemple, mais cela ne fait aucun type de vérification (par exemple, si vous l’utilisez le 2009/7/1, il utilisera un jour négatif ou une erreur.

function subDate(o, days) {
// keep in mind, months in javascript are 0-11
return new Date(o.getFullYear(), o.getMonth(), o.getDate() - days);;
}
1
OneOfOne

C'est ce que je ferais. Notez que vous pouvez simplifier l'expression. Je viens de l'écrire pour préciser que vous multipliez le nombre de jours par le nombre de millisecondes par jour.

 var newDate = new Date( yourDate.getTime() - (days * 24 * 60 * 60 * 1000) );
0
tvanfosson

Juste une autre option, que j'ai écrite:

Bibliothèque DP_DateExtensions

C'est probablement exagéré si TOUTES ce que vous voulez faire est un seul calcul, mais si vous allez faire plus de manipulations de date, vous le trouverez peut-être utile.

Prend en charge le formatage de date/heure, le calcul de la date (ajout/soustraction d'éléments de date), la comparaison de date, l'analyse de date, etc.

0
Jim Davis

J'ai créé une fonction pour la manipulation de la date. vous pouvez ajouter ou soustraire un nombre quelconque de jours, heures et minutes. 

function dateManipulation(date, days, hrs, mins, operator) {
    date = new Date(date);
    if (operator == "-") {
       var durationInMs = (((24 * days) * 60) + (hrs * 60) + mins) * 60000;
       var newDate = new Date(date.getTime() - durationInMs);
    } else {
       var durationInMs = (((24 * days) * 60) + (hrs * 60) + mins) * 60000;
       var newDate = new Date(date.getTime() + durationInMs);
    }
   return newDate;
}

Appelez maintenant cette fonction en passant des paramètres. Par exemple, voici un appel de fonction pour obtenir une date avant 3 jours à compter de ce jour.

var today = new Date();
var newDate = dateManipulation(today, 3, 0, 0, "-");
0
Malvi Panchal

c'est en référence à la réponse ci-dessus vérifier ce violon

https://jsfiddle.net/uniyalguru/azh65aa0/

function Cureent_Date() {
var today_GMT = new Date();
var dd = today_GMT.getDate();
var mm = today_GMT.getMonth() + 1; //January is 0!
var yyyy = today_GMT.getFullYear();
if (dd < 10) {
    dd = '0' + dd
}
if (mm < 10) {
    mm = '0' + mm
}
current_date = mm + '/' + dd + '/' + yyyy;
0
Ankit Uniyal