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 Perl suivant :
- #!/usr/bin/perl
-
- use Math::Trig;
-
- sub MoonPhase() {
- my($Year,$Month,$Day) = @_;
- my($M);
- my($XYear,$Century);
- if($Month <= 2) {
- $Year--;
- $Month += 12;
- }
- $Month -= 3;
- $XYear = $Year % 100;
- $Century = (int($Year / 100) * 146097) >> 2;
- $XYear = ($XYear * 1461) >> 2;
- $M = (int((((($Month * 153) + 2) / 5) + $Day) + 1721119 + $XYear + $Century) + 4.867) / 29.53058;
- return abs(2 * ($M - int($M)) - 1);
- }
-
- my($I);
- for($I=1;$I<=31;$I++)
- {
- $CircleType = &MoonPhase(1999, 11, $I);
- if($CircleType > 0.97) {
- print $I . " novembre 1999, Phase de la lune:Pleine lune\n";
- } else {
- if($CircleType < 0.03) {
- print $I . " novembre 1999, Phase de la lune:Pas de lune\n";
- } else {
- if(($CircleType > 0.46)&&($CircleType < 0.53)) {
- print $I . " novembre 1999, Phase de la lune: Quart de lune\n";
- }
- }
- }
- }
- for($I=1;$I<=31;$I++)
- {
- $CircleType = &MoonPhase(2007, 8, $I);
- if($CircleType > 0.97) {
- print $I . " novembre 2007, Phase de la lune:Pleine lune\n";
- } else {
- if($CircleType < 0.03) {
- print $I . " novembre 2007, Phase de la lune:Pas de lune\n";
- } else {
- if(($CircleType > 0.46)&&($CircleType < 0.53)) {
- print $I . " novembre 2007, Phase de la lune: Quart de lune\n";
- }
- }
- }
- }
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 : Jeudi, le 17 janvier 2019