Zu erkennen, wie Benutzer die Zeitzone?
Muss ich wissen, welche Zeitzone ist derzeit mein Benutzer anhand Ihrer IP-oder http-header.
Bekam ich viele Antworten zu diesem Problem, konnte ich aber nicht verstanden, diese Antwort. Einige sagten, verwenden -new Date().getTimezoneOffset()/60
(von hier aus). Aber was bedeutet es?
Ich habe eine date_default_timezone_set("Asia/Calcutta");
im root meiner (index.php -) Seite. Also, für dieses habe ich, um die Zeitzone, dynamisch und setzen Sie es in einem Ort Asia/Calcutta
.
- michaelapproved.com/articles/...
- dein link funktioniert nicht
- Den Kommentar unterhalb der Antwort sagt, dass "Dies für mich gearbeitet! Lesen Sie die Kommentare unter dem blog-post ein paar updates für den code." Deshalb gab ich den link hier.
- Ich lese es
- es ist wieder
330
machte ich eine Warnung, indem Sie die Funktion aufrufen. Aber wie kann man timezone( zB.Asia/Calcutta
- ) nach Aufruf der Funktion angebracht, mit deinem link? - lassen Sie uns weiter, diese Diskussion im chat
- Dies ist kein Duplikat. Diese Frage ist über PHP und die andere Frage ist über Javascript.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zusammenfassen Matt Johnson ' s Antwort in Bezug auf code:
date_default_timezone_set(timezone)
die false zurückgibt, wenn die Zeitzone ist ungültig! Mit dieser retrun-Wert er hat, um zu entscheiden, ob oder nicht, um die Seite zu aktualisieren!Intl.DateTimeFormat().resolvedOptions().timeZone
statt einer ganzen Bibliothek.Informationen zur Zeitzone des Browsers ist nicht Teil der HTTP-Spezifikation, also kann man nicht einfach bekommen Sie aus einer header.
Wenn Sie haben Lage-Koordinaten (die ein mobiles GPS-Gerät, zum Beispiel), dann kann man die Zeitzone mithilfe einer der folgenden Methoden. Jedoch, geolocation anhand der IP-Adresse ist keine tolle Lösung, da oft die IP ist, die von einem ISP oder proxy-server, die möglicherweise in einer anderen Zeitzone.
Gibt es einige Strategien, die Sie verwenden können, um zu versuchen, um zu erkennen, das Zeit-zone, wie die Verwendung von jsTimeZoneDetect Bibliothek, die ist ein guter Ausgangspunkt, aber unvollkommen genug, dass man nicht nur auf das verlassen, allein. Wenn Sie moment.js es ist eine integrierte Funktion im moment-Zeitzone namens
moment.tz.guess()
dass nicht die gleiche Sache.Die Idee der Verwendung von JavaScript ist
getTimezoneOffset()
- Funktion ist fehlerhaft, Sie sind nicht immer ein Zeit - zone, in der nur ein einziger offset für ein bestimmtes Datum. Sehen die Zeitzone tag wiki's Abschnitt "TimeZone != Offset".Schaut man jedoch auf Sie, haben Sie sich letztendlich entscheiden, auf einem von zwei Ansätzen:
ODER
Ich Diskutiere diese im detail (aus einem c# - Perspektive) in diese Antwort.
Abhängigkeiten:
http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
Zitat: SGet Besucher-Ortszeit-Sonnenaufgang und Sonnenuntergang Zeit die IP mit MaxMind GeoIP und PHP von Stanislav Khromov
Diese funktioniert einwandfrei...
One-Lösung ist, Sie zu Fragen! Vor allem auf Mitglieder-Systeme, wo Sie erfassen/registrieren eines Benutzer - geben Sie Ihnen eine Wahl an dieser Stelle. Einfache, aber präzise.
Zeitzone ist nicht verfügbar in den HTTP-header, aber Land (Abkürzung) ist in der ACCEPT_LANGUAGE header. Es werde so etwas wie "en-US" (UNS ist der country-code). Dies kann kombiniert werden mit der JavaScript-Informationen, um eine gute Vorstellung von der Benutzer-Zeitzone.
Dies ist, was ich benutze in JS:
Diese gibt eine Zeichenfolge zurück, wie "-6S1" für die zentrale zone (standard Zeitverschiebung von -6 Stunden, DST-aktiven im Sommer und addiert 1 Stunde). Ich verwenden ein cookie, um diese für PHP verfügbar. PHP sucht die TZ-Datenbank für die Zonen passen, und das Land. Für die hier (bei UNS, -6S1) es gibt 7 passenden Zonen, die erste ist "Amerika/Chicago".
BTW, es gibt 2 Zonen, in die Datenbank, wo die DST fügt etwas anderes als 1 Stunde: Lord-Howe-Insel (10.5W0.5) und die Troll-Station, Antarktis (0W2).