begin process at 2012 02 09 16:56:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date & Heure

 > LES PHASES DE LA LUNE

LES PHASES DE LA LUNE


 Information sur la source

Note :
Aucune note
Catégorie :Date & Heure Classé sous :algorithme, lune, calendrier Niveau :Initié Date de création :02/03/2008 Date de mise à jour :18/03/2009 13:49:16 Vu / téléchargé :15 287 / 462

Auteur : lgh

Ecrire un message privé
Site perso
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Calcul des phases de la lune entre le 06/01/2000 et le 31/12/2199.
Controlé sous IE 7 et Opéra 9.26

Source

  • // Fichier JavaScript LGH
  • function calcul() {
  • if (text3.value == '' || text3.value < 2000 || text3.value > 2199 || text1.value == '' || text1.value < 1 || text1.value > 31 || text2.value == '' || text2.value < 1 || text2.value > 12) alert('Les calculs ne sont faits que pour des dates libéllées normalement et comprises en le 06/01/2000 et le 31/12/2199 !');
  • else if (text2.value == 2 && text1.value > 29 || text2.value == 4 && text1.value > 30 || text2.value == 6 && text1.value > 30 || text2.value == 9 && text1.value > 30 || text2.value == 11 && text1.value > 30) alert('Les calculs ne sont faits que pour des dates libéllées normalement et comprises en le 06/01/2000 et le 31/12/2199 !');
  • else if (text2.value == 2 && eval(text3.value / 4) != Math.round(eval(text3.value / 4)) && text1.value > 28) alert('Les calculs ne sont faits que pour des dates libéllées normalement et comprises en le 06/01/2000 et le 31/12/2199 !');
  • else {
  • a = eval(text1.value);
  • b = eval(text2.value - 1);
  • if (b == 11) c = 334;
  • if (b == 10) c = 304;
  • if (b == 9) c = 273;
  • if (b == 8) c = 243;
  • if (b == 7) c = 212;
  • if (b == 6) c = 181;
  • if (b == 5) c = 151;
  • if (b == 4) c = 120;
  • if (b == 3) c = 90;
  • if (b == 2) c = 59;
  • if (b == 1) c = 31;
  • if (b < 1) c = 0;
  • e = eval(text3.value - 2000);
  • f = e / 4;
  • if (f == Math.floor(f) && text2.value > 2) f = Math.floor(f) + 1;
  • else f = Math.floor(f);
  • g = e * 365 + f + a + c;
  • if (text2.value > 2 && text3.value >= 2100) g = g - 1; //nbr de jours entiers qui sépare la date en cours du 1er janvier 2000 0h UTC
  • h = eval(((g - 5.76) * 86400) / 2551443); //Correction par rapport à la date de la nouvelle lune du 6/01/00, traduction des jours en seconde et calcul du nbr de lunaisons.
  • i = Math.round((h - Math.floor(h)) * 100) / 100;
  • if (i <= 0.05 || i >= 0.95) i = "P&eacute;riode de nouvelle lune<br\/><br\/><img src=\"lune1.jpg\" name=\"img73\" alt=\"P&eacute;riode de nouvelle lune\">";
  • if (i <= 0.55 && i >= 0.45) i = "P&eacute;riode de pleine lune<br\/><br\/><img src=\"lune3.jpg\" name=\"img74\" alt=\"P&eacute;riode de pleine lune\">";
  • if (i < 0.45 && i > 0.05) i = "P&eacute;riode de lune ascendante<br\/><br\/><img src=\"lune2.jpg\" name=\"img75\" alt=\"P&eacute;riode de lune ascendante\">";
  • if (i < 0.95 && i > 0.55) i = "P&eacute;riode de lune descendante<br\/><br\/><img src=\"lune4.jpg\" name=\"img76\" alt=\"P&eacute;riode de lune descendante\">";
  • document.getElementById('div').innerHTML =
  • '<P>Somme des jours entiers ou non du mois écoulé à la date visée = ' + a + '</P>' +
  • '<P>Somme des mois entiers de la date visée = ' + b + '</P>' +
  • '<P>Somme des jours des mois entiers de la date visée sans 29/02 avec étalonnage sur le 06/01/2000 = ' + c + '</P>' +
  • '<P>Somme des années depuis 2000 jusqu\'à la date choisie = ' + e + ' ans</P>' +
  • '<P>Somme des années bisextiles avant la date visée = ' + Math.floor(f) + ' soit ' + f + ' jours de plus.</P>' +
  • '<P>Total des jours entiers ou non de 01/01/2000 jusqu\'à la date visée y compris les 29/02 = ' + g + '</P>' +
  • '<P>Nombre de lunaisons = ' + Math.round(h * 100) / 100 + '</P>' +
  • '<P>Phase de la lune à la date visée</P>' + i;
  • }
  • }
// Fichier JavaScript LGH

function calcul() {
    if (text3.value == '' || text3.value < 2000 || text3.value > 2199 || text1.value == '' || text1.value < 1 || text1.value > 31 || text2.value == '' || text2.value < 1 || text2.value > 12) alert('Les calculs ne sont faits que pour des dates libéllées normalement et comprises en le 06/01/2000 et le 31/12/2199 !');
    else if (text2.value == 2 && text1.value > 29 || text2.value == 4 && text1.value > 30 || text2.value == 6 && text1.value > 30 || text2.value == 9 && text1.value > 30 || text2.value == 11 && text1.value > 30) alert('Les calculs ne sont faits que pour des dates libéllées normalement et comprises en le 06/01/2000 et le 31/12/2199 !');
    else if (text2.value == 2 && eval(text3.value / 4) != Math.round(eval(text3.value / 4)) && text1.value > 28) alert('Les calculs ne sont faits que pour des dates libéllées normalement et comprises en le 06/01/2000 et le 31/12/2199 !');
    else {
        a = eval(text1.value);
        b = eval(text2.value - 1);
        if (b == 11) c = 334;
        if (b == 10) c = 304;
        if (b == 9) c = 273;
        if (b == 8) c = 243;
        if (b == 7) c = 212;
        if (b == 6) c = 181;
        if (b == 5) c = 151;
        if (b == 4) c = 120;
        if (b == 3) c = 90;
        if (b == 2) c = 59;
        if (b == 1) c = 31;
        if (b < 1) c = 0;
        e = eval(text3.value - 2000);
        f = e / 4;
        if (f == Math.floor(f) && text2.value > 2) f = Math.floor(f) + 1;
        else f = Math.floor(f);
        g = e * 365 + f + a + c;
        if (text2.value > 2 && text3.value >= 2100) g = g - 1; //nbr de jours entiers qui sépare la date en cours du 1er janvier 2000 0h UTC
        h = eval(((g - 5.76) * 86400) / 2551443); //Correction par rapport à la date de la nouvelle lune du 6/01/00, traduction des jours en seconde et calcul du nbr de lunaisons.
        i = Math.round((h - Math.floor(h)) * 100) / 100;
        if (i <= 0.05 || i >= 0.95) i = "P&eacute;riode de nouvelle lune<br\/><br\/><img src=\"lune1.jpg\" name=\"img73\" alt=\"P&eacute;riode de nouvelle lune\">";
        if (i <= 0.55 && i >= 0.45) i = "P&eacute;riode de pleine lune<br\/><br\/><img src=\"lune3.jpg\" name=\"img74\" alt=\"P&eacute;riode de pleine lune\">";
        if (i < 0.45 && i > 0.05) i = "P&eacute;riode de lune ascendante<br\/><br\/><img src=\"lune2.jpg\" name=\"img75\" alt=\"P&eacute;riode de lune ascendante\">";
        if (i < 0.95 && i > 0.55) i = "P&eacute;riode de lune descendante<br\/><br\/><img src=\"lune4.jpg\" name=\"img76\" alt=\"P&eacute;riode de lune descendante\">";
        document.getElementById('div').innerHTML =
        '<P>Somme des jours entiers ou non du mois écoulé à la date visée = ' + a + '</P>' +
        '<P>Somme des mois entiers de la date visée = ' + b + '</P>' +
        '<P>Somme des jours des mois entiers de la date visée sans 29/02 avec étalonnage sur le 06/01/2000 = ' + c + '</P>' +
        '<P>Somme des années depuis 2000 jusqu\'à la date choisie = ' + e + ' ans</P>' +
        '<P>Somme des années bisextiles avant la date visée = ' + Math.floor(f) + ' soit ' + f + ' jours de plus.</P>' +
        '<P>Total des jours entiers ou non de 01/01/2000 jusqu\'à la date visée y compris les 29/02 = ' + g + '</P>' +
        '<P>Nombre de lunaisons = ' + Math.round(h * 100) / 100 + '</P>' +
        '<P>Phase de la lune à la date visée</P>' + i;
    }
}

 Conclusion

Un exemple dans le zip

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

21 mars 2008 14:12:31 :
Simplification du code. Niveau de précision du calcul supérieur
03 avril 2008 16:23:24 :
Niveau de précision rendu à 24 h
18 mars 2009 13:49:17 :
Alertes diverses et paradoxalement, un calcul d'arrondi afin de gagner en précision

 Sources du même auteur

Source avec Zip UNE CALCULATRICE
Source avec Zip PALETTE DE COULEURS
Source avec Zip RECHERCHER ET REMPLACER UN MOT DANS UN TEXTE
Source avec Zip LE MENU FICHIER DES APPLICATIONS
Source avec Zip UN MENU, UNE BARRE DE MENUS!

 Sources de la même categorie

Source avec Zip CALENDRIER ANNUEL UNIVERSEL AVEC SAINTS DU CALENDRIER ET FÊT... par 007Julien
OBTENIR LE NOMBRE DE JOURS D'UN MOIS SUIVANT SON ANNÉE par hugolegrand
SAINT DU JOUR par tefa24600
Source avec Zip Source avec une capture NIPCLOCK 1.2 par neep
COMPTE À REBOURS POUR ÉVÉNEMENTS À RÉPÉTITION par CSIBern

 Sources en rapport avec celle ci

Source avec Zip CALENDRIER ANNUEL UNIVERSEL AVEC SAINTS DU CALENDRIER ET FÊT... par 007Julien
SAINT DU JOUR par tefa24600
Source avec Zip LE COMPTE EST BON par 007Julien
Source avec Zip Source avec une capture MICRO-CALENDAR par amrounix
Source avec une capture AFFICHE UN CALENDRIER SOUS UNE ZONE DE SAISIE par amrounix

Commentaires et avis

Commentaire de jantosze le 03/03/2008 19:15:04

Salut,

Pour faire fonctionner ton script, j'ai:
pour accéder à la fonction calcul(),
<form action="calcul()" >
<input type="text" id="text1" size="2" maxlength="2" value="06" />
<input type="text" id="text2" size="2" maxlength="2" value="01" />
<input type="text" id="text3" size="4" maxlength="4" value="2000" />&nbsp;<input type="button" value="Calcul" onclick="calcul();" />
</form>
Dans la fonction calcul():
function calcul()
{
var t3 = document.getElementById("text3").value;
var t1 = document.getElementById("text1").value;
var t2 = document.getElementById("text2").value;
.... et donc substituer tous les appels textX par tX
}
Bon ca fonctionne ....

cdt
JAN

Commentaire de marcelo71 le 01/10/2011 21:27:12

Ce script n'est pas valable.
J'ai comparé le résultat à deux site.

Ce script génère des décalage de 1 voire 2 deux jours!!
Dommage.

Commentaire de lgh le 02/10/2011 06:13:41

Bonjour,
Merci de vous interesser à cette source.
Le décalage constaté est normal pour ce type de calcul. C'est pour cela que les phases de nouvelle lune et pleine lune sont données en période de trois jours. En effet le calcul des phases de la lune est d'une grande complexité et souvent réduit à une époque (ici 200 ans si je me souviens bien de ce que j'ai fait). l'Institut de mécanique céleste qui m'a servi de référence ne le donne du reste que pour 6500 ans (que, si jose dire). Pour plus d'info voir http://www.imcce.fr/fr/grandpublic/phenomenes/phases_lune/index.php
A bientôt.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

un calendrier bien special [ par kabouya ] bonjour,j'ai besoin d'un calandrier javascript qui me donne uniquement le debut et la fin de chaque mois. par exemple une entete on l'on peu choisir l horloge/calendrier [ par nlola28 ] kikou...je suis a la recherche du script pour faire des petite horloges avec des imges sur laquelle apparait la date et lheure atuel...mercinadine DateTimePicker [ par theboboteam ] Bonjour, peut on utiliser l'activeX DateTimePicker en javascript pour afficher un calendrier dans mes pages htm?j'ai bien vue des sources de calendrie Une question pour mon calendrier [ par syltouille ] Bonjour et bonne annee tout le monde.Mon premier souci de cette annee est:J'ai realise un calendrier en PHP avec des images pour chaque jour.- Je voud téléchargement d'un calendrier en javascript [ par FIFI69 ] il n'y a rien dans le téléchargement, seulement des raccourcis et des liens. Javascrip et Requete SQL [ par chris81 ] bonjour,je possede un calendrier en javascript qui me retourne un jour, un mois et une annee. Comment puis je faire pour inserer ce que me retourne c calendrier dans infobulle !!!! [ par roninou ] j'essai desesperement de mettre une calendrier dans une infobulle pour que l'utilisateur puisse choisir la date qu'il veut.j'ai deja le code pour crée Calendrier [ par asx9 ] Bonjour,je cherche un calendrier qui puisse me donner le numéro de la semaine selon la date choisie.merci pour votre aide,asx9 calendrier [ par xavierclavien ] au sujet du code du calendrier popup source N°20491 le popup s'affiche mais ne comporte plus de dates.quelqu'un aurait-il connu les mêmes problèmes et Fermeture de popup et envoi d'informations [ par Rankin ] Salut &#224; tous. Je bosse actuellement sur la r&#233;alisation d'un site, qui contient une partie administration pour g&#233;rer des bases de donn&


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales