Die Funktion DATE_SUNSET von PHP gibt einen UTC -Zeitstempel zurück. Wenn Ihre Server -Zeitzoneneinstellungen nicht mit der tatsächlichen Zeitzone übereinstimmen, kann dies zu Fehlern in der Anzeigezeit führen. Daher besteht der erste Schritt darin, sicherzustellen, dass die richtige Zeitzone vor dem aufgerufenen Date_Sunset festgelegt ist.
<span><span><span class="hljs-title function_ invoke__">date_default_timezone_set</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>); </span><span><span class="hljs-comment">// Stellen Sie die Zeitzone in Shanghai Zeit ein</span></span><span>
</span></span>Auf diese Weise können Sie sicherstellen, dass nachfolgende Zeitberechnungen auf der richtigen Zeitzone basieren.
Da DATE_SUNSET einen UTC-Zeitstempel zurückgibt, müssen Sie den Zeitunterschied manuell anpassen, wenn sich Ihr geografischer Standort in einer Zeitzone ohne NUTC befindet. Beispielsweise beträgt die Peking -Zeit 8 Stunden schneller als die UTC -Zeit. Sie können sie durch einfache Addition einstellen:
<span><span><span class="hljs-variable">$sunsetTimestamp</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date_sunset</span></span><span>(</span><span><span class="hljs-title function_ invoke__">time</span></span><span>(), SUNFUNCS_RET_TIMESTAMP, </span><span><span class="hljs-number">39.9042</span></span><span>, </span><span><span class="hljs-number">116.4074</span></span><span>); </span><span><span class="hljs-comment">// Peking Breitengrad</span></span><span>
</span><span><span class="hljs-variable">$localSunset</span></span><span> = </span><span><span class="hljs-variable">$sunsetTimestamp</span></span><span> + (</span><span><span class="hljs-number">8</span></span><span> * </span><span><span class="hljs-number">3600</span></span><span>); </span><span><span class="hljs-comment">// An Peking Zeit eingestellt</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Peking Sonnenuntergangszeit: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">"Y-m-d H:i:s"</span></span><span>, </span><span><span class="hljs-variable">$localSunset</span></span><span>);
</span></span>Die Sparzeit bei Tageslicht ist ein häufiger Faktor, der die Zeitberechnung beeinflusst. In einigen Bereichen kann die Zeitsparzeit in der Tageslicht eine Stunde vor der Standardzeit eine Stunde vor Ort führen. Wenn Ihre Bewerbung die Tageslichtsparenzeit unterstützen muss, können Sie automatisch die Sommersparenzeit über die integrierte DateTime -Klasse in PHP verarbeiten.
<span><span><span class="hljs-variable">$datetime</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTime</span></span><span>();
</span><span><span class="hljs-variable">$datetime</span></span><span>-></span><span><span class="hljs-title function_ invoke__">setTimestamp</span></span><span>(</span><span><span class="hljs-variable">$sunsetTimestamp</span></span><span>);
</span><span><span class="hljs-variable">$datetime</span></span><span>-></span><span><span class="hljs-title function_ invoke__">setTimezone</span></span><span>(</span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTimeZone</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>)); </span><span><span class="hljs-comment">// Betrachten Sie automatisch Tageslichtsparenzeit</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Eingepasste Sonnenuntergangszeit: "</span></span><span> . </span><span><span class="hljs-variable">$datetime</span></span><span>-></span><span><span class="hljs-title function_ invoke__">format</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>);
</span></span>Auf diese Weise stellt PHP automatisch fest, ob die Sparzeit bei Tageslicht gemäß den Zeitzonenregeln angepasst werden muss.
Manchmal brauchen wir möglicherweise keinen Zeitstempel, sondern möchten stattdessen eine formatierte Zeitzeichenfolge direkt erhalten. In diesem Fall können Sie den Parameter sunfuncs_ret_string von DATE_SUNSET verwenden, der eine formatierte Zeitzeichenfolge direkt zurückgibt. Zum Beispiel:
<span><span><span class="hljs-variable">$sunsetTime</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date_sunset</span></span><span>(</span><span><span class="hljs-title function_ invoke__">time</span></span><span>(), SUNFUNCS_RET_STRING, </span><span><span class="hljs-number">39.9042</span></span><span>, </span><span><span class="hljs-number">116.4074</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Sonnenuntergangszeit: "</span></span><span> . </span><span><span class="hljs-variable">$sunsetTime</span></span><span>;
</span></span>Zu diesem Zeitpunkt ist die zurückgegebene Zeit bereits die Zeit in der lokalen Zeitzone (sie muss sichergestellt werden, dass die Zeitzone korrekt eingestellt ist), wodurch die weitere Verarbeitung des Zeitstempels beseitigt wird.
Manchmal sind Sie möglicherweise nicht klar über die aktuellen Zeitzoneneinstellungen des Servers. Sie können die aktuelle Zeitzone über die Funktion date_default_timezone_get erhalten und die Zeit dadurch anpassen.
<span><span><span class="hljs-variable">$currentTimezone</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date_default_timezone_get</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Aktuelle Zeitzone: "</span></span><span> . </span><span><span class="hljs-variable">$currentTimezone</span></span><span>;
</span></span>Auf diese Weise können Sie die aktuelle Zeitzone dynamisch erhalten und entsprechende Anpassungen vornehmen.
In einigen Fällen kann die bis date_sunset zurückgegebene Zeit noch einen kleinen Fehler aufweisen. Diese Fehler hängen normalerweise mit Faktoren wie Wetter und geografischer Umgebung zusammen und können nicht vollständig durch den Code beseitigt werden. Wenn Sie die spezifische Abweichung kennen (z. B. durch Beobachtung von Datensätzen), können Sie den zurückgegebenen Zeitstempel manuell anpassen:
<span><span><span class="hljs-variable">$sunsetAdjusted</span></span><span> = </span><span><span class="hljs-variable">$sunsetTimestamp</span></span><span> + </span><span><span class="hljs-number">600</span></span><span>; </span><span><span class="hljs-comment">// Einstellung10Minute</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Eingepasste Sonnenuntergangszeit: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">"Y-m-d H:i:s"</span></span><span>, </span><span><span class="hljs-variable">$sunsetAdjusted</span></span><span>);
</span></span>Bei der Verarbeitung des Zeitstempels, der bis Datum_Sunset zurückgegeben wurde, müssen mehrere Faktoren wie Zeitzone, Tageslichtsparzeit und geografischer Ort in Betracht gezogen werden. Durch die obige Methode können wir sicherstellen, dass die Rückgabemedzeit mit der tatsächlichen Zeit übereinstimmt. In praktischen Anwendungen kann der Zeitstempel genauer mit der DateTime -Klasse, den Zeitzoneneinstellungen, den Zeitregeln für Tageslicht und anderen Mitteln angepasst werden, um den Anforderungen verschiedener Szenarien gerecht zu werden.