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 QuickBASIC suivant :
- DECLARE FUNCTION MoonPhase! (Year!, Month!, Day!)
- FOR I = 1 TO 31
- CircleType = MoonPhase(1999, 11, I)
- IF CircleType > .97 THEN
- PRINT STR$(I) + " novembre 1999, Phase de la lune:Pleine lune"
- ELSE
- IF CircleType < .03 THEN
- PRINT STR$(I) + " novembre 1999, Phase de la lune:Pas de lune"
- ELSE
- IF (CircleType > .46) AND (CircleType < .53) THEN
- PRINT STR$(I) + " novembre 1999, Phase de la lune: Quart de lune"
- END IF
- END IF
- END IF
- NEXT
- FOR I = 1 TO 31
- CircleType = MoonPhase(2007, 8, I)
- IF CircleType > .97 THEN
- PRINT STR$(I) + " août 2007, Phase de la lune:Pleine lune"
- ELSE
- IF CircleType < .03 THEN
- PRINT STR$(I) + " août 2007, Phase de la lune:Pas de lune"
- ELSE
- IF (CircleType > .46) AND (CircleType < .53) THEN
- PRINT STR$(I) + " août 2007, Phase de la lune: Quart de lune"
- END IF
- END IF
- END IF
- NEXT
-
- FUNCTION MoonPhase (Year, Month, Day)
- IF Month <= 2 THEN
- Year = Year - 1
- Month = Month + 12
- END IF
- Month = Month - 3
- XYear = Year MOD 100
- Century = INT((INT(Year / 100) * 146097) / 4)
- XYear = INT((XYear * 1461) / 4)
- M = (INT(((((Month * 153) + 2) / 5) + Day) + 1721119 + XYear + Century) + 4.867) / 29.53058
- MoonPhase = ABS(2 * (M - INT(M)) - 1)
- END FUNCTION
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 : Mercredi, le 14 septembre 2016