code.fastix.org

Dateiansicht:

Datei:Projekte -> PHP:Feiertage -> lib -> FtxMondPhase.php
md5:79077ed387a1c7740106d2ba60d91154
sha1:ddee7ace4496e7c19a64516209d22b1508bb0d1b
  1. <?php
  2.  
  3. /**
  4. * Description: Abschätzung(sic!) der Mondphase
  5. * Author: Jörg Reinholz, fastix Webdesign & Consult, Kassel (Germany) www.fastix.org
  6. * Version 1.0
  7. **/
  8.  
  9. function FtxMondPhase ($d=false, $m=false, $y=false) {
  10.  
  11.     $periodD       = 29.530588;
  12.     $periodS       = $periodD * 24 * 60 * 60;
  13.     $halfPeriod    = $periodD/2;
  14.     $Period_6      = $periodD/6;
  15.     $quarterPeriod = $periodD/4;
  16.     $ankerDate     = mktime(13,55,18,1,22,1970);
  17.     # 22. Januar 1970, 13:55:18 Uhr
  18.     $date; $phase; $diff;
  19.  
  20.     date_default_timezone_set('Europe/Berlin');
  21.  
  22.     if ( false === $d ) { $d = date('j'); }
  23.     if ( false === $m ) { $m = date('n'); }
  24.     if ( false === $y ) { $d = date('Y'); }
  25.     if ( checkdate($m, $d, $y) ) {
  26.         $date = mktime(23,59,59, $m, $d, $y);
  27.         $diff = ($date - $ankerDate) / $periodS;
  28.         $phase = round ( $periodD * ( $diff - floor($diff) ), 2);
  29.  
  30.         switch ( true ) {
  31.             case ( $phase <= .5 ):
  32.                 return 'Vollmond';
  33.                 break;
  34.             case ( $phase <= ($Period_6 - .5) ):
  35.                 return 'Dreiviertelmond, abnehmend';
  36.                 break;
  37.             case ( $phase <= (2 * $Period_6 - .5) ):
  38.                 return 'Halbmond, abnehmend';
  39.                 break;
  40.             case ( $phase <= (3 * $Period_6 - .5) ):
  41.                 return 'Viertelmond, abnehmend';
  42.                 break;
  43.             case ( $phase <= ($halfPeriod +.5) ):
  44.                 return 'Neumond ';
  45.                 break;
  46.             case ( $phase <= (4 * $Period_6  - .5) ):
  47.                 return 'Viertelmond, zunehmend ';
  48.                 break;
  49.             case ( $phase <= (5 * $Period_6 - .5) ):
  50.                 return 'Halbmond, zunehmend ';
  51.                 break;
  52.             case ( $phase <= (6 * $Period_6 - .5) ):
  53.                 return 'Dreiviertelmond, zunehmend ';
  54.                 break;
  55.             default:
  56.                 return 'Vollmond';
  57.         }
  58.     } else {
  59.         return false;
  60.     }
  61. }
  62.  
  63.  
  64. /**** Test: ****
  65. $m=1; $y=2016;
  66. for ($d=1; $d<=366; $d++) {
  67.     echo "$d.$m.$y :\t", FtxMondPhase($d, $m, $y), "\n";
  68. }
  69. #*/