MINI CALENDRIER OBJET

axdial Messages postés 8 Date d'inscription dimanche 17 mars 2002 Statut Membre Dernière intervention 28 février 2007 - 9 juil. 2004 à 00:25
axdial Messages postés 8 Date d'inscription dimanche 17 mars 2002 Statut Membre Dernière intervention 28 février 2007 - 28 févr. 2007 à 11:32
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/24405-mini-calendrier-objet

axdial Messages postés 8 Date d'inscription dimanche 17 mars 2002 Statut Membre Dernière intervention 28 février 2007
28 févr. 2007 à 11:32
Bonjour,

Pour corriger le problème de date, il suffit de remplacer toutes les occurences du mot 'getYear'par 'getFullYear' dans le fichier .js.
Il n'y aura plus de saut au passage des années précédant l'an 2000.
cs_sayann Messages postés 11 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 9 février 2009
5 mai 2006 à 10:23
Salut,

à mon avis, il y a un problème avec le changement d'année.
On arrive tout de suite dans les -1700 quelque soit le bouton sur lequel on appuie pour avancer ou reculer d'une année.
A corriger

@+
Sayann
axdial Messages postés 8 Date d'inscription dimanche 17 mars 2002 Statut Membre Dernière intervention 28 février 2007
9 juil. 2004 à 00:25
J'ai oublié les années bisextiles :
Pour corriger cet oubli, il suffit d'ajouter en première ligne de la fonction "minicalendrier_maj()" du fichier minicalendrier.js la ligne suivante :

this.moisnbjours[1]=(!(this.a.getYear()%4) && (this.a.getYear()%100)||!((this.a.getYear()%100)||(this.a.getYear()%400)))?29:28;

Explications :
les mois divisibles par 4 sont bisextilles sauf s'il sont séculaire et indivisibles par 400 :cf calendrier grégorien
a%b renvois 0 si a est divisible par b
soit "dv" pour divisible et "ndv" pour non divisible
si a dv 4 et !(a dv 100) ou (a dv 100 et a dv 400)
comme l'opérateur % agit comme vrai pour "non divisible", on obtient
si !(a ndv 4) et a ndv 100 ou (! (a ndv 100) et ! (a ndv 400))
avec l'équivalence : !a & !b <=> !(a||b)
si !(a ndv 4) et a ndv 100 ou !(a ndv 100 ou a ndv 400)
Rejoignez-nous