Don't like ads? PRO users don't see any ads ;-)
Guest

Moon phase

By: matiasalejoroldan on May 6th, 2012  |  syntax: PHP  |  size: 1.22 KB  |  hits: 18  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. <?php
  2. function moon_phase($year, $month, $day)
  3. {
  4.         /*
  5.         modified from http://www.voidware.com/moon_phase.htm
  6.         */
  7.  
  8.         $c = $e = $jd = $b = 0;
  9.         if ($month < 3)
  10.         {
  11.                 $year--;
  12.                 $month += 12;
  13.         }
  14.         ++$month;
  15.         $c = 365.25 * $year;
  16.         $e = 30.6 * $month;
  17.         $jd = $c + $e + $day - 694039.09;       //jd is total days elapsed
  18.         $jd /= 29.5305882;                                      //divide by the moon cycle
  19.         $b = (int) $jd;                                         //int(jd) -> b, take integer part of jd
  20.         $jd -= $b;                                                      //subtract integer part to leave fractional part of original jd
  21.  
  22.         $b = round($jd * 8);                            //scale fraction from 0-8 and round
  23.         if ($b >= 8 )
  24.         {
  25.                 $b = 0;//0 and 8 are the same so turn 8 into 0
  26.         }
  27.        
  28.         switch ($b)
  29.         {
  30.                 case 0:
  31.                         return 'New Moon';
  32.                         break;
  33.                 case 1:
  34.                         return 'Waxing Crescent Moon';
  35.                         break;
  36.                 case 2:
  37.                         return 'Quarter Moon';
  38.                         break;
  39.                 case 3:
  40.                         return 'Waxing Gibbous Moon';
  41.                         break;
  42.                 case 4:
  43.                         return 'Full Moon';
  44.                         break;
  45.                 case 5:
  46.                         return 'Waning Gibbous Moon';
  47.                         break;
  48.                 case 6:
  49.                         return 'Last Quarter Moon';
  50.                         break;
  51.                 case 7:
  52.                         return 'Waning Crescent Moon';
  53.                         break;
  54.                 default:
  55.                         return 'Error';
  56.         }
  57. }
  58.  
  59. $timestamp = time();
  60. echo moon_phase(date('Y', $timestamp), date('n', $timestamp), date('j', $timestamp));
  61. ?>