Aller au contenu

Sujets conseillés

Posté

Bonjour à tous. Le but du jeu est simplissime : calculer le nombre de jours entre deux dates. Les objets Date sont construits juste avec les infos year/month/day, le calcul des intervalles de temps inférieurs au jour n'intéresse pas l'application donc pour simplifier, on les met à la même valeur partout.

Dans ce cadre, voici un petit bout de code de test qui affiche le nombre de jours d'écart :

function delays() {
var day = 5;
var hour = 2;
var dt1 = new Date(2007, 02, day, hour, 0, 0);
var dt2 = new Date(2007, 02, day + 20, hour, 0, 0);
var delay = (dt2.getTime() - dt1.getTime())/(1000*3600*24);
alert(dt2.toLocaleString() + ' - ' + dt1.toLocaleString() + ' = ' + delay);
}

Le calcul marche bien en général : on trouve bien

dt2 - dt1 = 20

sauf si dt1 est initialisé entre le 5 mars 2007 à 2h00 et le 25 mars 2007 à 1h00 (je n'ai pas cherché pour les minutes...). Pour ces valeurs de dt1, la différence

dt2 - dt1 = 19.958333333333332

Kesako ???? :unsure:

Posté

Sans avoir la classe Date complète, difficile de te répondre.

Il est possible que celle-ci ait un bug... :(

Quelle version de Php utilise-tu ?

Posté

C'est la classe Date du Javascript (pas du PHP ;) )

J'ai bien entendu vérifié les résultats sous plusieurs navigateurs (Opera, Firefox et IE7).

Posté

Au temps pour moi... j'avais mal lu !

Mais... la différence est précisément de 3600 secondes... ce qui peut s'expliquer par le passage à l'heure d'été, non ?

D'autant plus que le 25 mars est précisément le jour où ce passage à l'heure d'été a eu lieu cette année et où on a donc perdu une heure ;)

Si tu ajoutes 20 jours, il est logique que tu sois impacté par cette différence à partir du 5 mars et jusqu'au 25, vu que le jour "ne comptant que 82800 secondes" sera dans l'intervalle.

Tu auras l'inverse lors du passage à l'heure d'hiver vu que tu auras "une journée de 90000 secondes" ;)

Dan

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...