11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je suis pour l'instant dans l'incompréhension totale ><
J'utilise une fonction js pour récupérer le stamp d'une date passée en paramètre. Voici le code :


        sdate = '17/03/2012' ; // Date exemple
        var date = new Date(); // Création de l'objet date
    
        date.setFullYear(sdate.substr(6,4));  // Instanciation de l'objet avec la chaine
        
        date.setMonth(sdate.substr(3,2));
        
        date.setDate(sdate.substr(0,2));
        
        date.setHours(0);
        
        date.setMinutes(0);
        
        date.setSeconds(0);
        
        date.setMilliseconds(0);
        
        date = (date.getTime() / 1000) ; // Car JS compte en millisecondes
        
        alert(date);


° PHP me donne comme résultat avec mktime() : 1331942400
-> Donnant comme date retour avec date() : 17/03/2012 // Donc correct

° JavaScript me donne comme résultat avec ma fc : 1334613600
-> Donnant comme date retour avec date() (php) : 16/04/2012 // Non correct ...

Quelqu'un aurait-il une idée de la raison ? o_O
Hello.

Je ne me rappelle plus ce qu'il en est en PHP, mais en JS les mois sont numérotés de 0 à 11.
Donc ton code doit être modifié avec :
date.setMonth(sdate.substr(3,2) - 1)
Il doit en être ainsi aussi pour le jour alors, puisqu'il me retourne 16 au lieu de 17 ...
Merci pour ta réponse !
Modifié par Seyu (17 Feb 2012 - 10:53)
Parce que du coup mon ajax envoie à mon script une date incorrecte, qui l'enregistre à un mois de décalage dans la base, donc vraiment pas cool ...

Il faudrait que je rajoute 1 au mois lors de l'envoi du paramètre ...
Pour ce genre de chose, j'ai tendance à préférer le traitement côté PHP, comme ça le codage / décodage se fait dans le même langage. Sinon, dans mon post précédent j'ai fait une coquille, il faut ajouter 1, et non pas retrancher 1.
J'ai effectivement simplifié la chose en utilisant la fonction que côté php lors de la requête sql x)