User Tools

Site Tools


php:kompost:timetosunset

[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;
}
 
?>
php/kompost/timetosunset.txt · Last modified: 11.12.2013 14:18:56 (external edit)