code.fastix.org

Dateiansicht:

Datei:Projekte -> PHP:Feiertage -> lib -> FtxSonne.php
md5:145ff4f54ed50d73dd6937107ce6cf44
sha1:c2e759f3ec32bd25f51a98ae78b4b60e4f5df5b6
  1. <?php
  2.  
  3. /**
  4. * Description: Abschätzung(sic!) von Sonnenauf- und Untergang
  5. * Author: Jörg Reinholz, fastix Webdesign & Consult, Kassel (Germany) www.fastix.org
  6. * Version 1.0
  7. **/
  8.  
  9.  
  10. class FtxSonne {
  11.  
  12.     protected $lat;
  13.     protected $long;
  14.     protected $ort;
  15.     protected $timeZone = 'Europe/Berlin';
  16.     protected $timeFormat = 'H:i';
  17.     protected $year = 1970;
  18.     protected $month = 1;
  19.     protected $day = 1;
  20.     protected $dto;
  21.     protected $tsSunrice;
  22.     protected $tsSunset;
  23.     protected $zenith=90.833333333333333333333;
  24.  
  25.     public function __construct( $lat=false, $long=false, $timeZone=false ) {
  26.         $this -> setOrt ('Goerlitz');
  27.         $this -> setTimeZone( $timeZone );
  28.     }
  29.  
  30.     public function setOrt ($ort='Kassel') {
  31.         $ort = strtoupper(trim($ort));
  32.         switch ($ort) {
  33.             case 'KASSEL':                      /* Mitte Deutschlands */
  34.                 $this ->  lat = 51.3127114;
  35.                 $this -> long = 9.4797461;
  36.                 $this -> ort  = 'Kassel';
  37.                 break;
  38.             case 'GOERLITZ':                    /* Osten Deutschlands */
  39.                 $this ->  lat = 51.1666667;
  40.                 $this -> long = 14.9833333;
  41.                 $this -> ort  = 'Görlitz';
  42.                 break;
  43.             case 'ISENBRUCH':                   /* Westen Deutschlands */
  44.                 $this ->  lat = 51.051109;
  45.                 $this -> long = 5.866316;
  46.                 $this -> ort  = 'Isenbruch';
  47.                 break;
  48.             case 'OBERSTDORF':                   /* Süden Deutschlands */
  49.                 $this ->  lat = 47.49;
  50.                 $this -> long = 10.2833333;
  51.                 $this -> ort  = 'Oberstdorf';
  52.                 break;
  53.             case 'FLENSBURG':                   /* Norden Deutschlands */
  54.                 $this ->  lat = 54.7833333;
  55.                 $this -> long = 9.4333333;
  56.                 $this -> ort  = 'Flensburg';
  57.                 break;
  58.             default: # Kassel
  59.                $this ->  lat = 51.3127114;
  60.                 $this -> long = 9.4797461;
  61.                 $this -> ort  = 'Default';
  62.                 break;
  63.         }
  64.         $this -> calcSun();
  65.     }
  66.  
  67.     public function getOrt () {
  68.         return $this -> ort;
  69.     }
  70.  
  71.     public function getLat () {
  72.         return $this -> lat;
  73.     }
  74.  
  75.     public function getLong () {
  76.         return $this -> long;
  77.     }
  78.  
  79.     public function setTimeZone( $timeZone=false ) {
  80.         if ( $timeZone == $this -> timeZone) {
  81.             return true;
  82.         } elseif (false !== $timeZone) {
  83.             if (date_default_timezone_set($timeZone)) {
  84.                 $this -> timeZone = $timeZone;
  85.                 $this -> calcSun();
  86.                 return true;
  87.             } else {
  88.                 return false;
  89.             }
  90.         } else {
  91.             return false;
  92.         }
  93.     }
  94.  
  95.     public function setLong( $long=false ) {
  96.         if ( $long < 180 && $long > -180 ) {
  97.             $this -> long = $long;
  98.             $this -> calcSun();
  99.             return true;
  100.         } else {
  101.             return false;
  102.         }
  103.     }
  104.  
  105.     public function setLat( $lat=false ) {
  106.         if ( $lat <= 90 && $lat >= -90 ) {
  107.             $this -> long = $lat;
  108.             $this -> calcSun();
  109.             return true;
  110.         } else {
  111.             return false;
  112.         }
  113.     }
  114.  
  115.     public function setLatAndLong( $lat=false, $long=false ) {
  116.         return ( $this -> setLat($lat) && $this->setLong($long) );
  117.     }
  118.  
  119.  
  120.     public function setDate( $day, $month, $year ) {
  121.         if (! $day)   { $day   = $this -> day;   }
  122.         if (! $month) { $month = $this -> month; }
  123.         if (! $year)  { $year =  $this -> year;  }
  124.         if ( $dto = mktime(0,0,0, $month, $day, $year) ) {
  125.             $this -> day   = $day;
  126.             $this -> month = $month;
  127.             $this -> year  = $year;
  128.             $this -> dto = $dto;
  129.             $this -> calcSun();
  130.         }
  131.         return $dto;
  132.     }
  133.  
  134.     public function setDay( $day )     { $this -> setDate( $day, $this -> month, $this -> year );   }
  135.  
  136.     public function setMonth( $month ) { $this -> setDate( $this -> day, $month, $this -> year ); }
  137.  
  138.     public function setYear( $year )   { $this -> setDate( $this -> day, $this -> month, $year ); }
  139.  
  140.  
  141.     public function calcSun() {
  142.         $this ->tsSunrice =  date_sunrise( $this -> dto, SUNFUNCS_RET_TIMESTAMP, $this -> lat, $this -> long, $this -> zenith );
  143.         $this ->tsSunset  =  date_sunset(  $this -> dto, SUNFUNCS_RET_TIMESTAMP, $this -> lat, $this -> long, $this -> zenith );
  144.     }
  145.  
  146.     public function getSunrice( $format=false ) {
  147.         if (! $format) { $format = $this -> timeFormat; }
  148.         if ($this -> dto ) {
  149.             return date( $format, $this -> tsSunrice );
  150.         } else {
  151.             return false;
  152.         }
  153.     }
  154.  
  155.     public function getSunset( $format=false ) {
  156.         if (! $format) { $format = $this -> timeFormat; }
  157.         if ( $this -> dto ) {
  158.             return date( $format, $this -> tsSunset );
  159.         } else {
  160.             return false;
  161.         }
  162.     }
  163. }
  164.  
  165.  
  166. /**** Test: ****
  167. $sonne=new FtxSonne;
  168. $sonne -> setOrt('Kassel');
  169. echo $sonne -> getOrt(), " ( ", $sonne -> getLat(), " / " , $sonne -> getLong(), " )\n";
  170. $sonne -> setDate(1,1,2016);
  171. for ($i=1; $i<=366; $i++) {
  172.     $sonne -> setDay($i);
  173.     echo date('Y-m-d', mktime(0,0,0, 1,$i,2016)) .' : '. $sonne -> getSunrice('H:i:s') . ' bis ' .  $sonne -> getSunset('H:i:s') . "\n\n";
  174. }
  175. #*/