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 Oberon .NET suivant :
MODULE moonphase;
VAR
I:INTEGER;
CircleType:REAL;
PROCEDURE MoonPhase(Year,Month,Day:INTEGER):REAL;
VAR
M:REAL;
XYear,Century:INTEGER;
BEGIN
IF Month <= 2 THEN
DEC(Year);
INC(Month,12);
END;
DEC(Month,3);
XYear := Year MOD 100;
Century := (((Year DIV 100) * 146097)) DIV 4;
XYear := (XYear * 1461) DIV 4;
M := (System.Math.Floor(((((Month * 153) + 2) / 5) + Day) + 1721119 + XYear + Century) + 4.867) / 29.53058;
RETURN System.Math.Abs{(REAL):REAL}(2 * (M - System.Math.Floor(M)) - 1);
END MoonPhase;
BEGIN
FOR I := 1 TO 31 DO
CircleType := MoonPhase(1999, 11, I);
IF CircleType > 0.97 THEN
WRITELN(I," novembre 1999, Phase de la lune:Pleine lune");
ELSE
IF CircleType < 0.03 THEN
WRITELN(I," novembre 1999, Phase de la lune:Pas de lune");
ELSE
IF (CircleType > 0.46) & (CircleType < 0.53) THEN
WRITELN(I," novembre 1999, Phase de la lune: Quart de lune");
END;
END;
END;
END;
FOR I := 1 TO 31 DO
CircleType := MoonPhase(2007, 8, I);
IF CircleType > 0.97 THEN
WRITELN(I," août 2007, Phase de la lune:Pleine lune");
ELSE
IF CircleType < 0.03 THEN
WRITELN(I," août 2007, Phase de la lune:Pas de lune");
ELSE
IF (CircleType > 0.46) & (CircleType < 0.53) THEN
WRITELN(I," août 2007, Phase de la lune: Quart de lune");
END;
END;
END;
END;
END moonphase.
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 : Samedi, le 2 février 2008