Depuis déjà fort longtemps, certaines applications DOS, fournissait la possibilité d'obtenir les phases lunaires lorsqu'on consultait leur calendrier comme en fait fois la capture du MonsterBook:
Pourtant, même s'il ne s'agit que de convertir une date Julienne en Grégorienne pour ensuite calculer à tous les 30 jours (plus exactement 29,53058) la lune revenant inlassablement, les systèmes d'exploitation ne l'indique pas! Vous trouverez la réponse que vous souhaitez, inspiré du code d'Alan Graff, à l'aide du code source PHP suivant:
Essayer maintenant !
- <?php
- function MoonPhase($Year,$Month,$Day) {
- if($Month<=2) {
- $Year--;
- $Month+=12;
- }
- $Month-=3;
- $XYear=$Year % 100;
- $Century=(floor($Year / 100)*146097) >> 2;
- $XYear=($XYear*1461) >> 2;
- $M=(floor((((($Month*153)+2)/ 5)+$Day)+1721119+$XYear+$Century)+4.867)/29.53058;
- return abs(2*($M-floor($M))-1);
- }
-
- for($I=1;$I<=31;$I++) {
- $CircleType=MoonPhase(1999,11,$I);
- if($CircleType>0.97) echo $I." novembre 1999, Phase de la lune:Pleine lune<BR>"; else
- if($CircleType<0.03) echo $I." novembre 1999, Phase de la lune:Pas de lune<BR>"; else
- if(($CircleType>0.46)&&($CircleType<0.53)) echo $I." novembre 1999, Phase de la lune: Quart de lune<BR>";
- }
- for($I=1;$I<=31;$I++) {
- $CircleType=MoonPhase(2007,8,$I);
- if($CircleType>0.97) echo $I." août 2007, Phase de la lune:Pleine lune<BR>"; else
- if($CircleType<0.03) echo $I." août 2007, Phase de la lune:Pas de lune<BR>"; else
- if(($CircleType>0.46)&&($CircleType<0.53)) echo $I." août 2007, Phase de la lune: Quart de lune<BR>";
- }
- ?>
on obtiendra le résultat suivant:
1 novembre 1999, Phase de la lune: Quart de lune8 novembre 1999, Phase de la lune:Pas de lune
15 novembre 1999, Phase de la lune: Quart de lune
23 novembre 1999, Phase de la lune:Pleine lune
30 novembre 1999, Phase de la lune: Quart de lune
6 août 2007, Phase de la lune: Quart de lune
13 août 2007, Phase de la lune:Pas de lune
20 août 2007, Phase de la lune: Quart de lune
28 août 2007, Phase de la lune:Pleine lune
Dernière mise à jour : Dimanche, le 5 avril 2015