2009-06-22 11 views

Répondre

42
var firstDay = new Date("2009/06/25"); 
var nextWeek = new Date(firstDay.getTime() + 7 * 24 * 60 * 60 * 1000); 

Vous pouvez également regarder DateJS si vous aimez API "couramment".

+1

ne fonctionne pas pour la semaine avec les changements d'heure d'été, bien que :( – etienne

+1

@etienne, avez-vous essayé datejs? Je suis curieux, je ne l'ai pas testé avec la lumière du jour des économies en particulier. –

+0

Pas encore. Mais je me bats actuellement avec DST -. depuis que nous avons changé ce week-end :( – etienne

9
Date.prototype.addDays = function (d) { 
    if (d) { 
     var t = this.getTime(); 
     t = t + (d * 86400000); 
     this.setTime(t); 
    } 
}; 

this_week.addDays(7); 
+0

Je l'aime ...! +1 – Cerebrus

+1

Je laisserais le prototype de date seul, cependant. – glmxndr

+1

Pourquoi laisser le prototype de date seul? – razzed

28
function nextweek(){ 
    var today = new Date(); 
    var nextweek = new Date(today.getFullYear(), today.getMonth(), today.getDate()+7); 
    return nextweek; 
} 
+0

Nice - la fonction est autodocumenté et travaille avec des cas de pointe telles que les secondes sautées – l0b0

+0

Beau travail avec une légère adaptation, vous pouvez trouver un jour de la semaine (c.-à-: prochaine.. jeudi). ad au dernier argument, today.getDate() - today.getDay() + 7 + 4 (qui fonctionne pour jeudi) – Lathan

+1

Cela peut cependant générer des dates invalides, pouvant peut ne pas fonctionner, en fonction de l'intelligence des moteurs de JS cibles Date(). Par exemple, une semaine après le 30 août 2013 sera le 37 août 2013, ce qui est invalide. – Shayne

8

function dateObject.getNextWeekDay renvoie le jour de la semaine suivant la date de l'objet.

Date.prototype.getNextWeekDay = function(d) { 
 
    if (d) { 
 
    var next = this; 
 
    next.setDate(this.getDate() - this.getDay() + 7 + d); 
 
    return next; 
 
    } 
 
} 
 

 
var now = new Date(); 
 
var nextMonday = now.getNextWeekDay(1); // 0 = Sunday, 1 = Monday, ... 
 
var secondNextMonday = new Date(nextMonday).getNextWeekDay(1); 
 
console.log('Next Monday : ' + nextMonday); 
 
console.log('Second Next Monday : ' + secondNextMonday);

+0

mérite d'être la meilleure réponse –

+0

cela est destructeur, il met à jour l'argument. http://stackoverflow.com/questions/1090815/how-to-clone-a-date-object-in-javascript –

+1

et pollue le prototype de date - voir http://programmers.stackexchange.com/questions/104320/why -is-extend-the-dom-built-in-object-prototypes-a-bad-idea – tuomassalo

1

Fonction qui retourne la prochaine weekdaay:

function getNextWeekDay (startDate, dayOfWeek){ 
    var dayOffset = dayOfWeek > startDate.getDay() 
     ? dayOfWeek - startDate.getDay() 
     : dayOfWeek - startDate.getDay() + 7; 

    startDate.setDate(startDate.getDate() + dayOffset); 

    return startDate; 
} 

var now = new Date(); 

var nextMonday = getNextWeekDay(new Date(),1); // 0 = Sunday, 1 = Monday, ... 
var nextSaturday = getNextWeekDay(new Date(),6); 
var nextSunday = getNextWeekDay(new Date(),0); 
var secondNextMonday = getNextWeekDay(new Date(now.getTime() + (7 *24 * 60 * 60 * 1000)),1); 
alert(nextMonday+ '- '+nextSaturday+ '- '+nextSunday+ '- '+secondNextMonday); 
Questions connexes