Egalité entre deux dates.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Egalité entre deux dates.

par Ryle » 10 janv. 2008, 11:31

Mouais... il est malgré tout possible que les deux valeurs soient effectivement différente. Il n'y a pas à ma connaissance de fonction clone() en javascript, permettant de dupliquer une instance. En revanche, après une rapide recherche sur google, tu peux en trouver quelques unes qui ont été implémentés...

Notament trouvé celle-ci qui m'a l'air pas mal :
function clone(obj){
    if(obj == null || typeof(obj) != 'object')
        return obj;

    var temp = new obj.constructor(); 
    for(var key in obj)
        temp[key] = clone(obj[key]);

    return temp;
}
Tu aurais alors (à tester) :
var dateServeur = new Date();  
var dateTemp = clone(dateServeur);

par Berzemus » 09 janv. 2008, 20:04

si c'est exprimé en secondes, y'a pas de soucis à avoir :lol:

JS n'est plus l'usine à gaz des années 90..

par Devether » 09 janv. 2008, 18:03

Afin d'éviter cela, il te faut faire appel à une nouvelle instance de Date :
var dateServeur = new Date(); 
var dateTemp = new Date();
Dans ce cas, javascript execute-t-il assez rapidement les deux commandes pour que "dateServeur" soit bien strictement égale à "dateTemp" ?

par Ryle » 08 janv. 2008, 17:27

Tiens, c'est vrai que je ne m'était pas posé la question avec les objets javascript, mais apparement ce qui t'arrive c'est que tu manipules des références qui pointent toutes deux vers le même objet. (Effet que l'on retrouve en php et qui a changé entre php4 et php5).

En gros :
var dateServeur = new Date(); // déclare une variable qui pointe vers une instance de l'objet Date
var dateTemp = dateServeur; // déclare une variable qui pointe vers le même objet Date
Du coup, quelque soit la variable utilisée c'est toujours la même instance qui est modifiée et la modification apparait donc pour les deux variables. Afin d'éviter cela, il te faut faire appel à une nouvelle instance de Date :
var dateServeur = new Date(); 
var dateTemp = new Date();

Egalité entre deux dates.

par Devether » 08 janv. 2008, 17:19

Bonjour,

J'ai un petit problème avec le traitement des dates en JS.

J'ai fais un script qui teste des dates saisies par rapport a celle du serveur.

Code : Tout sélectionner

var val = document.getElementById('date_demandee').value; var dateDemandee = getDate(val); var dateServeur = new Date(); var dateTemp = dateServeur; dateTemp.setDate(dateDemandee.getDate()); ...
quand la dernière ligne de code est executée pour changer la date de "dateTemp" et bien la date de "dateServeur" est également changée.

Je voudrais savoir s'il y a un moyen de contourner ça ou bien y a-t-il une autre méthode ?

Merci d'avance,
Devether