Page 1 sur 1

Datepicker nombre de jours

Posté : 16 mai 2011, 10:45
par Bola
Bonjour,

J'utilise actuellement DatePicker pour faire des calculs en Javascript puis les afficher dans un tableau.
Par exemple, j'ai calculé la différence entre 2 dates sélectionnées, pas de problème.

Code : Tout sélectionner

document.getElementById('nbJours').value = (Math.round(daydiff(parseDate($("#dateEntree").val()), parseDate($("#dateSortie").val())))); nbJours = document.getElementById('nbJours').value;

Maintenant j'essaie de calculer le nombre de jours entre le début de l'année (01 Janvier) et la 1ere date choisie.
Je n'arrive pas à faire ce calcul. En fait je ne sais pas comment définir la date du 1er Janvier.

J'ai essayé en prenant exemple sur le calcul du dessus, sans succes:

Code : Tout sélectionner

document.getElementById('nbJours2').value = (Math.round(daydiff(parseDate($("#dateEntree").val()), XXXX))); nbJours2 = document.getElementById('nbJours2').value;
J'ai essayer en remplacant ces XXXX par 01/01/2011, par 1, ...

Merci de votre aide.
N'hesitez pas si vous avez besoin de précisions.

PS: voila la fonction daydiff:

Code : Tout sélectionner

function daydiff(first, second) { return (second-first)/(1000*60*60*24) }

Re: Datepicker nombre de jours

Posté : 17 mai 2011, 00:31
par devlop78
http://www.quackit.com/javascript/javas ... ctions.cfm

Par exemple

var d = new Date();
d.setDate(xxx);
d.UTC();

Ensuite, tu soustrais, et t'as plus qu'a faire le reste :p

Re: Datepicker nombre de jours

Posté : 17 mai 2011, 09:49
par Bola
Merci de ta réponse devlop78,
mais je n'arrive toujours pas à mettre les 2 dates au bon format.

Avec de code:

Code : Tout sélectionner

var d = new Date("1/1/2011"); alert(d); alert(parseDate($("#dateEntree").val()));
J'obtiens: Sat Jan 01 2011 00:00:00 GMT+0100 (Paris, Madrid)
et: Sat Jun 04 2011 00:00:00 GMT+0200 (Central Europe)

Mais aussi l'erreur: Uncaught TypeError: Cannot call method 'split' of undefined
qui empeche la soustraction.

voici la fonction parsedate:

Code : Tout sélectionner

function parseDate(str) { var mdy = str.split('/') return new Date(mdy[2], mdy[1], mdy[0]);
J'ai essayé en utilisant d.setDate(2011,1,1); sans succes,je retrouve la meme erreur qu'au dessus.

La ligne de code d.UTC(); provoque systématiquement l'erreur suivante:
Uncaught TypeError: Object Sun Jul 03 2016 00:00:00 GMT+0200 (Central Europe Daylight Time) has no method 'UTC'

Re: Datepicker nombre de jours

Posté : 17 mai 2011, 10:45
par Bola
Youpi,
ca fonctionne:

Code : Tout sélectionner

var myDate=new Date(); myDate.setFullYear(2011,0,1); alert(myDate); alert(parseDate($("#dateEntree").val())); document.getElementById('diff').value = (Math.round(daydiff(myDate, parseDate($("#dateEntree").val())))); diff = document.getElementById('diff').value; alert(diff);
Il reste juste un petit probleme: quand j'entre la date du 04/05/11 par exemple, l'alerte m'affiche la date du 04 Juin 2011 00:00:00 GMT+0200 (Central Europe) (au lieu de Mai), donc le calcul est faux de 30 jours... Je ne sais pas si le probleme viens du "Central Europe", mais je ne sais pas comment le transformer en heure de Paris.

En tout cas, ta piste m'a bien aidé devlop78.

Re: Datepicker nombre de jours

Posté : 17 mai 2011, 17:31
par Bola
Bon, voila la solution du dernier petit souci rencontré, au cas ou quelqu'un à le même.
J'ai bidouillé la fonction parseDate:

Code : Tout sélectionner

function parseDate(str) { var mdy = str.split('/') return new Date(mdy[2], mdy[1]-1, mdy[0]-1+3); }
Voilou