In PHP wird die Funktion date_sunset () verwendet, um die Sonnenuntergangszeit der angegebenen Zeit und Position zu berechnen und einen Zeitstempel oder eine formatierte Zeichenfolge zurückzugeben. In einigen Fällen gibt die Funktion jedoch Falsch zurück, was normalerweise einen Fehler aufgetreten ist oder eine Berechnung fehlgeschlagen ist. Dieser Artikel wird in mehrere häufige Gründe eingehen, die DATE_SUNSET () verursachen, um falsche zurückzugeben und diese Probleme zu vermeiden.
Die Standardverwendung von Date_Sunset () lautet wie folgt:
date_sunset(
int $timestamp,
int $returnFormat = SUNFUNCS_RET_STRING,
float $latitude = ini_get("date.default_latitude"),
float $longitude = ini_get("date.default_longitude"),
float $zenith = ini_get("date.sunset_zenith"),
float $gmtOffset = 0
): string|int|false
Wenn bestimmte Parameter nicht korrekt übergeben werden, insbesondere Breitengrad ( $ Breite ) und Längengrad ( $ Longitude ), kann die Funktion falsch zurückgeben.
// Fehlerbeispiel:Breitengrad und Längengrad sind nicht festgelegt
$sunset = date_sunset(time());
if ($sunset === false) {
echo "Die Sonnenuntergangszeit kann nicht berechnet werden";
}
Lösung: Stellen Sie sicher, dass die gültigen Werte für Breiten- und Längengrad -Werte in:
$sunset = date_sunset(time(), SUNFUNCS_RET_STRING, 31.7667, 35.2333, 90, 2);
Wenn der eingehende Breitengrad nicht zwischen -90 und 90 liegt oder der Längengrad nicht zwischen -180 und 180 liegt, wird die Funktion nicht korrekt behandelt und gibt direkt falsch zurück.
// Verwickelbarer Breitengrad und Längengrad
$sunset = date_sunset(time(), SUNFUNCS_RET_STRING, 1234, 5678); // Fehler
Stellen Sie sicher, dass die Parameter den wahren geografischen Koordinatenbereich erfüllen.
Die interne Berechnung, die von DATE_SUNSET () verwendet wird, hängt vom Zeitstempel ab. Wenn der Zeitstempel den Bereich der von PHP unterstützten Ganzzahlen überschreitet (insbesondere bei 32-Bit-Systemen), kann Falsch zurückgegeben werden.
// Überschreiten 32 Zeitstempelbereich des Bit -Systems
$sunset = date_sunset(99999999999, SUNFUNCS_RET_STRING, 40.7128, -74.0060);
Es wird empfohlen , Zeit () oder angemessene Strtotime () zu verwenden, um einen legitimen Zeitstempel zu erzeugen.
PHP ermöglicht es, den Standard -Breitengrad, Längengrad und Zenit durch die Php.ini -Datei festzulegen. Wenn diese Werte nicht festgelegt oder falsch konfiguriert werden, kann DATE_SUNSET () indirekt auch nicht ordnungsgemäß funktionieren.
echo ini_get('date.default_latitude');
echo ini_get('date.default_longitude');
Wenn die Ausgabe leer oder nicht numerisch ist, sollten diese Parameter manuell im Code übergeben werden.
In polaren Regionen steigt die Sonne zu bestimmten Jahreszeiten (wie der polaren Nacht oder am Tag im Nordpol) nie auf oder setzt sich nie auf. In diesem Fall kann Date_sunset () auch falsch zurückkehren, da an diesem Tag kein "Sonnenuntergang" -Phänomen vorhanden ist.
// Standort im Nordpol,Kein Sonnenuntergang pro Tag
$sunset = date_sunset(strtotime("2025-01-01"), SUNFUNCS_RET_STRING, 89.9, 135.0);
Der letzte Parameter $ gmtoffset steuert den Offset von GMT (UTC) in Stunden. Wenn der Wert unangemessen festgelegt wird, kann dies auch zu ungedeckten Ergebnissen führen.
Zum Beispiel sollte die Peking -Zeit +8.0 betragen. Wenn Sie auf -8.0 eingestellt sind, erhalten Sie möglicherweise ein falsches Ergebnis oder falsch .
DATE_SUNSET () ist eine sehr praktische Zeitfunktion, hängt jedoch von mehreren Parametern ab, und jeder Fehler kann dazu führen, dass FALSE zurückgegeben wird. Die korrekte Nutzung sollte enthalten:
Übergeben Sie deutlich wichtige Parameter wie Zeitstempel , Breitengrad und Längengrad
Überprüfen Sie, ob Probleme mit der relevanten Konfiguration in php.ini vorhanden sind
Vermeiden Sie Anrufe unter extremen geografischen oder zeitlichen Bedingungen