[PHP] Zeit bis zum Sonnenauf/untergang
<?php
//Definieren aller Parameters
define('C_LATITUDE', 48.25);
define('C_LANGITUDE', 48.25);
define('C_ZENIT', 90);
define('C_GMTOFFSET', 2);
define('C_FUNC_SUNRISE', 'date_sunrise');
define('C_FUNC_SUNSET', 'date_sunset');
//Sonnenaufgang heute
$sunriseToday = getSunTime(C_FUNC_SUNRISE);
//Sonnenuntergang heute
$sunsetToday = getSunTime(C_FUNC_SUNSET);
//Prüfen ob Jetzt der Sonnenaufgang noch nicht vorbei ist (Jetzt ist vor Sonnenaufgang)
if($sunriseToday['diffSec'] >= 0){
echo "es geht nocht {$sunriseToday['hours']} Stunden und {$sunriseToday['minutes']} Minuten bis zum Sonnenaufgang";
//Ansonsten prüfen ob der Sonnenuntergang noch nicht vorbei ist (Jetzt ist nach Sonnenaufgang, jedoch vor Sonnenuntergang)
}elseif($sunsetToday['diffSec'] >= 0){
echo "es geht nocht {$sunsetToday['hours']} Stunden und {$sunsetToday['minutes']} Minuten bis zum Sonnenuntergang";
//Ansonsten mit dem Sonnenaufgang von Morgen rechnen (Jetzt ist nach Sonnenuntergang)
}else{
//Sonnenaufgang morgen
$sunriseTomorrow = getSunTime(C_FUNC_SUNRISE, strtotime('+1 day'));
echo "es geht nocht {$sunriseTomorrow['hours']} Stunden und {$sunriseTomorrow['minutes']} Minuten bis zum Sonnenaufgang (Morgen)";
}
/**
* Berechnet die verschiedenen Elemente Rund um die Differenz von Jetzt und dem Wert
* der Funktionen date_sunrise und date_sunset
* @param String $function Name der Funktion. C_FUNC_SUNRISE oder C_FUNC_SUNSET
* @param Timestamp $time Timestamp für den Tag an dem die Berechnung stattfinden soll
* @return Array Alle Informationen die gebraucht werden
* "timestamp" UnixTimeStamp des Sonnenauf/untergangs
* "diffSec" Differenz des timestamps zu jetzt
* "hours" Der Stundenanteil der Differenz
* "minutes" Der Minutenanteil der Differenz
* "seconds" Der Sekundenanteil der Differenz
*/
function getSunTime($function = C_FUNC_SUNRISE, $time = NULL){
//Timestamp des Sonnenaufg/untergangs nach Greenwich ermitteln
//Der gmt-Offset scheint bei mir lokal nicht zu funktionieren, Wenn ich als Rückgabe den
//Timestamp haben will. Dies wird in weiter unten korrigiert
$timestamp = $function(time(), SUNFUNCS_RET_TIMESTAMP, C_LATITUDE, C_LANGITUDE, C_ZENIT, 0);
//date_sunrise mit gmtoffset korrigieren
$retArr['timestamp'] = strtotime('+ '.C_GMTOFFSET.' Hours', $timestamp);
//Differenz in Sekunden zu jetzt berechnen
$retArr['diffSec'] = $retArr['timestamp'] - time();
//In Stunden
$retArr['hours'] = $retArr['diffSec'] / 3600 % 24;
//Minuten
$retArr['minutes'] = $retArr['diffSec'] / 60 % 60;
//und Sekunden
$retArr['seconds'] = $retArr['seconds'] % 60;
return $retArr;
}
?>