Objet Date() et "héritage" de valeur : zé soui déboussolé !

Résolu
Signaler
Messages postés
22
Date d'inscription
dimanche 16 juillet 2006
Statut
Membre
Dernière intervention
25 novembre 2011
-
Messages postés
22
Date d'inscription
dimanche 16 juillet 2006
Statut
Membre
Dernière intervention
25 novembre 2011
-
Bonjour tout le monde !

Voilà le problème :
- j'ai une date de départ : startDate
- une valeur intermédiaire : sDt = startDate
- une petite méthode pour l'incrémenter en jours : sDt.setTime(sDt.getTime() + (86400000 * Nb));
ce qui donne en boucle :
while (1) {
  sDt = startDate;
  milisec = sDt.setTime(sDt.getTime() + (86400000 * Nb));
  if (sDt>endDate) break;
  alert(startDate);
  Nb++;
}
Si j'ai placé un alert c'est que là est le problème : startDate a pris la valeur de sDt !!
Quelqu'un peut m'expliquer et / ou me fournir un moyen pour que startDate garde sa valeur de départ ??
Merci d'avance

4 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
bonjour,

var sDt = new Date(startDate);
startDate n'est pas une variable, mais un objet

indépendamment de tenter de comprendre ce que tu cherches
à faire, qui me semble? disons... curieux ( mais bon... )

Cordialement

[mon Site][M'écrire]Bul
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
enfin.. il fallait lire :
startDate ne doit pas être une variable, mais un objet
( je suppute un machin comme startDate=new date(...) )
[mon Site][M'écrire]Bul
Messages postés
22
Date d'inscription
dimanche 16 juillet 2006
Statut
Membre
Dernière intervention
25 novembre 2011

Bonsoir Bul3,
Ah tu es curieux de savoir à quoi cela me mène ?
Je travaille sur un calendrier d'événements, avec récurrences.
C'est un plugin dédié, pour le moment, à Wordpress.
Si tu veux avoir une petite idée de la chose, va donc voir mon blog : http://heirem.fr

Déclarer startDate en objet Date() a été fait avant la boucle que je donne en exemple.
J'ai bien essayé de pré déclarer sDt, cela ne change rien à l'affaire.
En fait pour tout te dire j'ai déjà écris une procédure du même genre, avec les même paramètres, mais pas la même finalité évidement, et qui marche très bien !
Mais même en isolant la boucle totalement, cela donne le même résultat, et j'en vient à me demander comment l'autre boucle fonctionne !

Comme la seule différence vient du calcul  sDt.setTime(sDt.getTime() + (86400000 * Nb)) je pense que le problème est là.
Mais où exactement, je ne vois pas !

Objet ou pas, quand on fait un bidule  =  kekchose, c'est bidule qui prend le contenu de kekchose.
Si par la suite on modifie le contenu de bidule, il n'y a pas de raison que kekchose soit affecté sans qu'on le spécifie explicitement !
Ou alors quelque chose m'échappe, genre les arbres qui cachent la forêt ...
Merci tout de même ;)
Messages postés
22
Date d'inscription
dimanche 16 juillet 2006
Statut
Membre
Dernière intervention
25 novembre 2011

Mille excuses Bul3 !!
Je viens de relire que ce que tu m'avais proposé !
Ma première lecture avait été un peu trop rapide ...

Effectivement affecter sDt par un new Date(startDate) change tout !
Je viens de faire le test et cela fonctionne.

J'ai donc appris quelque chose (penser objet) en plus d'avoir résolu mon problème , merci !