47 votes

Trouver une date en soustrayant un nombre X de jours d'une date particulière en Javascript

Je veux trouver une date en soustrayant un nombre X de jours d'une date particulière en JavaScript. Ma fonction JavaScript accepte 2 paramètres. L'un est la valeur de la date et l'autre est le nombre de jours qui doit être soustrait.

Par exemple, je passe mon argument date comme 27 juillet 2009 et je passe mon autre argument comme 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-il possible en JavaScript ? Merci pour toute aide.

81voto

Daniel F. Thornton Points 3024

Tout simplement :

yourDate.setDate(yourDate.getDate() - daysToSubtract);

23voto

neoneye Points 11545
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()
    );
}

2voto

chintan khetiya Points 5941

Je vous propose ici une réponse supplémentaire qui renverra la date dans un format spécifique.

Tout d'abord, vous pouvez obtenir la date actuelle 10/08/2013 comme suit

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

Maintenant, remettez 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);
}

Alors, aujourd'hui, c'est 10/08/2013 donc il retournera 10/06/2013 .

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

1voto

OneOfOne Points 15558

Voici un exemple, mais il ne fait aucune vérification (par exemple, si vous l'utilisez le 2009/7/1, il utilisera un jour négatif ou enverra 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);;
}

0voto

tvanfosson Points 268301

C'est ce que je ferais. Notez que vous pouvez simplifier l'expression, je l'ai juste écrite pour qu'il soit clair que vous multipliez le nombre de jours par le nombre de millisecondes dans un jour.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X