DUREE - CALCULE LA DUREE PRÉCISE QUI S'EST ÉCOULÉE ENTRE 2 DATES

Signaler
Messages postés
3
Date d'inscription
mardi 13 mai 2003
Statut
Membre
Dernière intervention
25 août 2003
-
cs_hubert75
Messages postés
1
Date d'inscription
mercredi 16 février 2005
Statut
Membre
Dernière intervention
1 avril 2006
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/16052-duree-calcule-la-duree-precise-qui-s-est-ecoulee-entre-2-dates

cs_hubert75
Messages postés
1
Date d'inscription
mercredi 16 février 2005
Statut
Membre
Dernière intervention
1 avril 2006

Bonjour,

merci et bravo pour ce script. J'ai cependant remarqué une petite anomalie.
A partir du moment où on a fait une erreur de saisie, exemple j/m/aa, le message d'alerte apparaît bien, on corrige la date dans le format jj/mm/aaaa mais le message d'erreur apparaît toujours.
Il n'y a visiblement pas de réinitialisation des erreurs.
Enfin, ce serait peut-être bien de redonner le focus au champ qui n'est pas valide.
J'ai testé sous IE et sous firefox.

Pour mon usage perso ça va faire l'affaire.
cs_reblochon
Messages postés
49
Date d'inscription
lundi 28 avril 2003
Statut
Membre
Dernière intervention
27 septembre 2004

Pour finir:

Elle est moins precise car tes arguments de fonction sont:
function calculduree(jourdebut,moisdebut,anneedebut,jourfin,moisfin,anneefin) et donc limités à cela.

Avec la methode que je te montre tu envois deux objet date. Ton objet date peut etre simple new Date(2003,9,21) 21octobre 2003
ou plus precise new Date(2003,9,21,18,30) 21octobre 2003 à 18h30.

Il n'y a pas de limitation pour connaitre tout type d'ecart entre deux dates.

Quand tantot je parlais de milisecondes, ce n'etait pas pour me rendre plus malin que toi, mais c'est ce que retourne la soustraction entre deux objets Date().

Au revoir
Philippe
iwaweb
Messages postés
56
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
14 décembre 2017

Ah bon, la mienne est moins précise ? je vois mal pourquoi. Pas besoin de travailler avec des millisecondes pour avoir de la précision.
cs_reblochon
Messages postés
49
Date d'inscription
lundi 28 avril 2003
Statut
Membre
Dernière intervention
27 septembre 2004

On peu lire dans mon script: match(/^d+/)+
j'ai oublié le backslash (desolé), il fallait lire: match(/^\d+/)+
De toute facon, ca ne sert qu'à enlever la partie decimal du nombre.

Bon maintenant: essayes mon code (corrigé) et essayes le tien, iwaweb. Tu remarqueras que tant que tu n'affiches pas le nombre d'année ecoulées entre les deux dates (comme toi, juste les semaines et les jours), l'importance des annees bissextiles est completement inutiles. En effet, la soustraction entre deux dates retourne les milisecondes en tenant compte deja des annees bissextiles. Donc tant que tu ne veux pas diviser le nombre de jours par 365 ou 366 pour afficher le nombre d'année, ca ne sert à rien de savoir lequelles le sont ou pas.

Laissez l'object "Date" faire son travail de comparaison. Il vous dira (à madiken et à toi) bien plus rapidement et plus surement si une date est:
* bonne ex: 2003fevrier31 [new Date(2003,1,31) => return 2003mars3;] facile à verifier que le gars c'est fourré, tester les mois.
* plus petite d1<d2
* et son ecart avec une autre date. d1-d2

Pour finir tu titres: "la duree precise"... je pense que ma methode ne limite pas la precision. la tienne si. Je ne dis pas ca pour te decourager. Je trouve ca super les gens qui partagent leur code. Et puis si ca se trouve, c'est moi qui me trompe...

bonne journee
Philippe