Was ist der einfachste Weg, den UTC-Offset in PHP relativ zur aktuellen (System-) Zeitzone zu erhalten?UTC Offset in PHP
Antwort
date('Z');
kehrt der UTC-Offset arbeiten.
$this_tz_str = date_default_timezone_get();
$this_tz = new DateTimeZone($this_tz_str);
$now = new DateTime("now", $this_tz);
$offset = $this_tz->getOffset($now);
Ungeprüfte, sollte aber in Sekunden
Nützlich, wenn Sie die Klasse Datetime in PHP verwenden 5. Aber ich bin nicht. –
date("Z")
wird den UTC-Offset relativ zur Zeitzone des Servers und nicht zur Zeitzone des Benutzers zurückgeben. Um die Maschinenzeitzone des Benutzers zu erhalten, können Sie die Javascript getTimezoneOffset()
Funktion verwenden, die den Zeitunterschied zwischen UTC-Zeit und Ortszeit in Minuten zurückgibt.
<script type="text/javascript">
d = new Date();
window.location.href = "page.php?offset=" + d.getTimezoneOffset();
</script>
Und in page.php
die Ihre PHP-Code enthält, können Sie tun, was Sie mit diesem Offset-Wert soll. Oder anstatt auf eine andere Seite umzuleiten, können Sie den Offset-Wert je nach Bedarf über Ajax an Ihr PHP-Skript senden.
OP explizit gefragt * "relativ zur aktuellen (System-) Zeitzone?" * – Madbreaks
OP hat die PHP-Lösung gefragt, nicht JS –
Ich habe eine etwas modifizierte Version von dem, was Oscar getan hat.
date_default_timezone_set('America/New_York');
$utc_offset = date('Z')/3600;
Dies gab mir den Offset von meiner Zeitzone, EST, zu UTC, in Stunden.
Der Wert von $ utc_offset war -4.
Echodatum ('P'); // Ausgabe: etwas +02: 00 oder -04: 00
Dies ist die gleiche JavaScript date.getTimezoneOffset()
Funktion:
<?php
echo round(date('Z')/-60,2);
?>
['date (' Z ') '] (http://php.net/manual/en/function.date.php) ist der *« Zeitzonenversatz in Sekunden. »* Das Minuszeichen sollte bleiben ... Dividiere durch' 60'. Nicht mit '-60' Dann wird der Zeitzonen-Offset des Servers ausgegeben. OP wollte (2008) den Offset des lokalen Benutzers mit dem Wert vergleichen, über den Sie sprechen. –
@LouysPatriceBessette 'getTimezoneOffset()' Funktion in Javascript gibt genau diesen Wert (-180). –
Das gilt für [JavaScript getTimezoneOffset()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset) ... Und es ist in Minuten statt Sekunden. PHP date macht diese absolute Inversion nicht. –
- 1. django DateTimeField mit UTC-Offset?
- 2. Moment Zeitzone: UTC Offset Differenz
- 3. Get UTC Offset von Zeitzone in Javascript
- 4. Offset zu UTC-Datum in Javascript hinzufügen
- 5. Erhalten Sie UTC-Offset in Ruby
- 6. konvertieren utc time und offset zu DateTime
- 7. Offset von DateTime subtrahieren (Datumszeit bis UTC)
- 8. JavaScript - aktuelles Datum mit UTC-Offset abrufen
- 9. POSIX Möglichkeit Benutzereingaben mit utc Offset in Kalenderzeit zu konvertieren
- 10. Wie UTC bekommt Offset während DST Zeit in .NET
- 11. Hinzufügen von Offset mit dem UTC-Datum in SQL
- 12. Konvertieren von Zeichenfolge mit UTC-Offset in ein Datetime-Objekt
- 13. Get UTC Zeitzone Offset wo Stunde X ist in Ruby
- 14. Loop Through Offset in PHP
- 15. Get UTC Offset vom Datum mit unterschiedlicher Zeitzone
- 16. Wie bekomme ich den aktuellen UTC-Offset (Zeitzone)?
- 17. PHP $ _SESSION undefined Offset
- 18. DateTimeOffset Fehler: UTC-Offset von lokalen dateTime stimmt nicht mit dem Offset-Argument überein
- 19. PHP Warnung: Ungültiger String-Offset
- 20. undefiniert Offset PHP-Fehler 1
- 21. Undefinierter Offset in der PHP-Klasse - wikipedia
- 22. Wie undefiniert Offset-Fehler in PHP
- 23. PHP Convert Local time zu UTC DateTime
- 24. Wie berechne ich den Offset in Stunden einer bestimmten Zeitzone von UTC in Ruby?
- 25. Convert String Datum utc
- 26. EDT in UTC nach EDT konvertieren
- 27. Welche PHP-Datum und Zeit-Tools für GMT Offset verwenden
- 28. iPhone CurrentTimeZoneOffset von UTC
- 29. Dynamischer Zeitzonen-Offset in elasticsearch aggregation?
- 30. Java: Datum und Offset-Problem?
Danke. Leider erfordert PHP, dass Sie date_default_timezone_set() aufrufen. Wenn Sie dies auf GMT einstellen, werden Ihre Daten aus einer Datenbank immer noch in Ortszeit sein, aber Datum ('Z') wird Null zurückgeben. Wenn Sie es auf die Zeitzone des Servers einstellen, können Sie auch den Offset des Servers von GMT in einer Include-Datei fest codieren. Es ist unglaublich, dass es keinen direkten Weg dafür gibt. EDIT: Ich entdeckte, dass Sie date_default_timezone_set (date_default_timezone_get()) tun können. Wie scheußlich! – Oscar
Datum ('Z') gibt den GMT-Offset in Sekunden zurück – Dahomz
Das ergibt 0. – Adry