In PHP wird die Funktion date_sunset () verwendet, um die Sonnenuntergangszeit eines bestimmten Datums und eines bestimmten Ortes zu berechnen. Standardmäßig gibt diese Funktion die Zeit basierend auf der Standardzeitzone des Servers zurück. Wenn sich die Einstellung der Serverzeitzone von der Zeitzone der Zielspeicherstellung unterscheidet, kann die erhaltene Sonnenuntergangszeit ungenau sein. In diesem Artikel wird detailliert eingeführt, wie die Zeitzonenparameter der Funktion date_sunset () angepasst werden, um sicherzustellen, dass die richtige Sonnenuntergangszeit erhalten wird.
Die grundlegende Syntax der Funktion date_sunset () lautet wie folgt:
date_sunset(
int $timestamp,
int $format = 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 $gmt_offset = 0
): string|int|float|false
$ timestamp : unix timestamp für datetime
$ Format : Rückgabewertformat, häufig verwendete String -Format ( sunfuncs_ret_string ) oder Zeitstempelformat ( sunfuncs_ret_timestamp )
$ Latitude , $ Longitude : Geografische Koordinaten
$ zenith : Sonnenhöhewinkel, Standard
$ GMT_OFFSET : Zeitzone -Offset (Anzahl der Stunden relativ zu GMT)
DATE_SUNSET () Der letzte Parameter $ GMT_OFFSET ist der Schlüssel zum Anpassen der Zeitzone. Es ist die Anzahl der Stunden relativ zu GMT, wie z. B.:
Peking Zeit (UTC+8) Eingang 8
New York Time (UTC-5) Incoming-5
Durch das korrekte Bestehen von $ GMT_OFFSET kann die Funktion die genaue Sonnenuntergangszeit dieser Zeitzone zurückgeben.
Das folgende Beispiel zeigt, wie Sie Datum_Sunset () verwenden, um die Sonnenuntergangszeit der Peking -Zeit zu erhalten:
<?php
// Legen Sie die Zeitzone fest,Beeinflussen date() Ausgabe gleicher Funktionen,但不Beeinflussen date_sunset Berechnung von
date_default_timezone_set('Asia/Shanghai');
// Holen Sie sich den Zeitstempel für heute
$timestamp = time();
// Setzen Sie geografische Koordinaten(Peking)
$latitude = 39.9042;
$longitude = 116.4074;
// Legen Sie die Zeitzone fest偏移,Peking时间是 +8
$gmt_offset = 8;
// Holen Sie sich die Sonnenuntergangszeit,Geben Sie das Format als Zeichenfolge zurück "HH:MM"
$sunset_time = date_sunset($timestamp, SUNFUNCS_RET_STRING, $latitude, $longitude, 90, $gmt_offset);
echo "Peking时间的日落时间是:$sunset_time";
?>
Dieser Code gibt ähnlich wie folgt aus:
Peking时间的日落时间是:18:45
$ GMT_OFFSET muss mit der Zeitzone übereinstimmen , die $ Latitude und $ Longitude entspricht.
Die PHP -Server -Zeitzone wirkt sich nicht auf die Zeitzonenberechnung von DATE_SUNSET aus, sondern wirkt sich auf die Ausgabe von Datum () und andere Zeitfunktionen aus.
Wenn Sie sich mit Tageslichtsparenzeit befassen möchten, müssen Sie $ GMT_OFFSET dynamisch anhand von Daten anpassen oder komplexere Zeit- und Zeitbibliotheken (z. B. DateTime in Kombination mit DateTimezone ) verwenden, um genauere Momente zu berechnen.
DATE_SUNSET () unterstützt die automatische Identifizierung der Tageslichtsparzeit nicht. Wenn Sie Zeitzonen genauer verarbeiten müssen, können Sie datetime zuerst verwenden, um den Zeitstempel mit der Zeitzone zu erhalten, und sie dann in DATE_SUNSET () übergeben.
Beispiel:
<?php
// Zielzeitzone
$timezone = new DateTimeZone('America/New_York');
// Datum und Uhrzeit angeben
$date = new DateTime('now', $timezone);
// Holen Sie sich den Zeitstempel
$timestamp = $date->getTimestamp();
// Geografische Koordinaten(New York)
$latitude = 40.7128;
$longitude = -74.0060;
// Holen Sie sich Zeitzonenversatz(Stunde)
$gmt_offset = $timezone->getOffset($date) / 3600;
// Holen Sie sich die Sonnenuntergangszeit
$sunset_time = date_sunset($timestamp, SUNFUNCS_RET_STRING, $latitude, $longitude, 90, $gmt_offset);
echo "New York时间的日落时间是:$sunset_time";
?>
Dies kann den Offset automatisch entsprechend der Zielzeitzone anpassen, um manuelle Berechnungsfehler zu vermeiden.
Der Parameter $ GMT_OFFSET von DATE_SUNSET () bestimmt die Zeitzone der zurückgegebenen Sonnenuntergangszeit.
Das manuelle Durchgang in der richtigen Zeitzone -Offset kann genaue Ergebnisse gewährleisten.
Durch die Kombination von DateTime und DateTimezone können komplexe Zeitzonen und die Sparenzeit von Tageslicht mehr Flexibilität verarbeiten.