Wenn das Zeitzonenmanagement mit Daten und Zeiten in PHP zu tun hat, ist es für Entwickler häufig ein wichtiges Thema. Um die Anwendungen zu ermöglichen, um Daten und Uhrzeiten in verschiedenen Regionen korrekt anzuzeigen, bietet PHP mehrere Tools, um Zeitzoneneinstellungen zu ermöglichen. Unter ihnen sind die Funktionen von DateTime :: SetTimeZone und TimeZone_Open zwei häufig verwendete Tools, mit denen Entwickler Zeitzonen flexibel festlegen können. In diesem Artikel wird ausführlich eingeführt, wie diese beiden Funktionen kombiniert werden, um die Zeitkonvertierung in einer Umgebung mit mehreren Zeitzonen zu übernehmen.
DateTime :: setTimeZone ist eine Methode in der DateTime -Klasse, die die Zeitzone eines DateTime -Objekts ändert. Wenn Sie ein DateTime -Objekt erstellt haben, verwenden Sie diese Methode, um ihre Zeitzone in das angegebene Zeitzonenobjekt zu ändern. Zu den gemeinsamen Nutzungsszenarien gehört das Konvertieren der Benutzereingabedauer in eine bestimmte Zeitzone oder die Konvertierung der UTC -Zeit in die lokale Zeit.
timezone_open ist eine Funktion in PHP, mit der ein DateTimezone -Objekt, das die angegebene Zeitzone darstellt, geöffnet und zurücksend wird. Dieses Zeitzonenobjekt kann an DateTime :: setTimeZone übergeben werden, um die Zeitzone des DateTime -Objekts festzulegen.
<span><span><span class="hljs-variable">$timezone</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>);
</span></span>
Der obige Code gibt ein DateTimezone -Objekt zurück, das die Zeitzone Shanghai darstellt.
In einer Umgebung mit mehreren Zeiten können wir TimeZone_Open verwenden, um ein DateTimezone -Objekt zu erstellen und es dann über DateTime :: setTimeZone auf das DateTime -Objekt anzuwenden. Dies ermöglicht eine flexible Zeitzonenkonvertierung.
Angenommen, wir müssen die UTC -Zeit in die Zeitzone "Asien/Shanghai" konvertieren. Der spezifische Code lautet wie folgt:
<span><span><span class="hljs-comment">// Erstellen a UTC Zeitzone DateTime Objekt</span></span><span>
</span><span><span class="hljs-variable">$utcDateTime</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-string">'now'</span></span><span>, </span><span><span class="hljs-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-string">'UTC'</span></span><span>));
</span><span><span class="hljs-comment">// Drucken UTC Zeit</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'UTC Zeit: '</span></span><span> . </span><span><span class="hljs-variable">$utcDateTime</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><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-comment">// verwenden timezone_open Öffnen Sie die angegebene Zeitzone</span></span><span>
</span><span><span class="hljs-variable">$shanghaiTimeZone</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>);
</span><span><span class="hljs-comment">// Wille UTC ZeitKonvertieren zu上海ZeitzoneZeit</span></span><span>
</span><span><span class="hljs-variable">$utcDateTime</span></span><span>-></span><span><span class="hljs-title function_ invoke__">setTimezone</span></span><span>(</span><span><span class="hljs-variable">$shanghaiTimeZone</span></span><span>);
</span><span><span class="hljs-comment">// Drucken上海ZeitzoneZeit</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'上海Zeit: '</span></span><span> . </span><span><span class="hljs-variable">$utcDateTime</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><span class="hljs-string">"\n"</span></span><span>;
</span></span>
Ausgangsergebnis:
<span><span><span class="hljs-string">UTC</span></span><span> </span><span><span class="hljs-string">Zeit:</span></span><span> </span><span><span class="hljs-number">2025-06-29 10:00:00</span></span><span>
</span><span><span class="hljs-string">上海Zeit:</span></span><span> </span><span><span class="hljs-number">2025-06-29 18:00:00</span></span><span>
</span></span>
Manchmal kann der Benutzer eine Zeit für eine bestimmte Zeitzone anbieten, die wir in die Zeitzone des Systems oder eine andere Zeitzone konvertieren müssen. Das folgende Beispiel zeigt, wie die Benutzereingabe "2025-06-29 15:00:00" in die UTC-Zeit konvertiert wird.
<span><span><span class="hljs-comment">// 用户输入的Zeit和Zeitzone(假设用户提供的是纽约Zeit)</span></span><span>
</span><span><span class="hljs-variable">$userTime</span></span><span> = </span><span><span class="hljs-string">'2025-06-29 15:00:00'</span></span><span>;
</span><span><span class="hljs-variable">$userTimeZone</span></span><span> = </span><span><span class="hljs-string">'America/New_York'</span></span><span>;
</span><span><span class="hljs-comment">// erstellen DateTime Objekt,und stellen Sie die Zeitzone des Benutzers fest</span></span><span>
</span><span><span class="hljs-variable">$userDateTime</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">$userTime</span></span><span>, </span><span><span class="hljs-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-variable">$userTimeZone</span></span><span>));
</span><span><span class="hljs-comment">// Drucken用户输入的Zeit</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'用户Zeit (New Yorker Zeitzone): '</span></span><span> . </span><span><span class="hljs-variable">$userDateTime</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><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-comment">// Konvertieren zu UTC Zeitzone</span></span><span>
</span><span><span class="hljs-variable">$userDateTime</span></span><span>-></span><span><span class="hljs-title function_ invoke__">setTimezone</span></span><span>(</span><span><span class="hljs-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-string">'UTC'</span></span><span>));
</span><span><span class="hljs-comment">// Drucken转换后的Zeit</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Konvertieren zu UTC Zeit: '</span></span><span> . </span><span><span class="hljs-variable">$userDateTime</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><span class="hljs-string">"\n"</span></span><span>;
</span></span>
Ausgangsergebnis:
<span><span><span class="hljs-string">用户Zeit</span></span><span> </span><span><span class="hljs-string">(New Yorker Zeitzone):</span></span><span> </span><span><span class="hljs-number">2025-06-29 15:00:00</span></span><span>
</span><span><span class="hljs-string">Konvertieren zu</span></span><span> </span><span><span class="hljs-string">UTC</span></span><span> </span><span><span class="hljs-string">Zeit:</span></span><span> </span><span><span class="hljs-number">2025-06-29 19:00:00</span></span><span>
</span></span>
Bei Verwendung von DateTime :: setTimeZone kehrt PHP direkt zum ursprünglichen Objekt zurück und kehrt ein neues DateTime -Objekt nicht neu, wenn die Zielzeitzone mit der ursprünglichen Zeitzone übereinstimmt.
timezone_open unterstützt mehrere Zeitzonenformate, einschließlich Region/Stadtformate (wie Asien/Shanghai ), Offset -Formate (wie +02: 00 ), Ecor E.
Die Zeitzone -Konvertierung berücksichtigt die Tageslichtsparzeit (DST), die nach den Regeln der ausgewählten Zeitzone automatisch angepasst wird.
Die Verwendung der Funktion DateTime :: SetTimeZone und TimeZone_Open kann eine sehr flexible und leistungsstarke Timezone -Konvertierung erzielen. Wenn Sie eine Zeitzone vernünftig auswählen, können Sie sicherstellen, dass Benutzer immer die genaue Zeit sehen, die ihrer Zeitzone entspricht, wenn Sie weltweit besuchen. Beide Funktionen von PHP unterstützen stark, ob es die Systemzeit in die Benutzerzeit oder die Zeit in einer Zeitzone in eine andere konvertiert.