html - Bestimmen Sie die Zeitzone eines Benutzers

Translate

Gibt es eine Standardmethode für einen Webserver, um die Zeitzone eines Benutzers innerhalb einer Webseite zu bestimmen?

Möglicherweise aus einem HTTP-Header oder einem Teil deruser-agentZeichenfolge?

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate
-new Date().getTimezoneOffset()/60;

Die MethodegetTimezoneOffset()subtrahiert Ihre Zeit von GMT und gibt die Anzahl der Minuten zurück. Wenn Sie also in GMT-8 leben, wird 480 zurückgegeben.

Um dies in Stunden zu setzen, dividieren Sie durch 60. Beachten Sie auch, dass das Vorzeichen das Gegenteil von dem ist, was Sie benötigen - es berechnet den Versatz von GMT von Ihrer Zeitzone, nicht den Versatz Ihrer Zeitzone von GMT. Um dies zu beheben, multiplizieren Sie einfach mit -1.

Beachten Sie auch dasw3schoolsagt:

Der zurückgegebene Wert ist keine Konstante, da die Sommerzeit verwendet wird.

Quelle
Translate

Die beliebteste (== Standard?) Methode zur Bestimmung der Zeitzone, die ich gesehen habe, ist einfachFragen Sie die Benutzer selbst.Wenn für Ihre Website ein Abonnement erforderlich ist, kann dieses in den Profildaten der Benutzer gespeichert werden. Für anon Benutzer können die Daten als UTC oder GMT oder ähnliches angezeigt werden.

Ich versuche nicht, ein kluger Kerl zu sein. Es ist nur so, dass manchmal einige Probleme außerhalb eines Programmierkontexts feinere Lösungen haben.

Quelle
Translate

Bisher gibt es keine HTTP-Header, die die Zeitzone des Clients melden, obwohl vorgeschlagen wurde, sie in die HTTP-Spezifikation aufzunehmen.

Wenn ich es wäre, würde ich wahrscheinlich versuchen, die Zeitzone mit clientseitigem JavaScript abzurufen und sie dann mit Ajax oder etwas anderem an den Server zu senden.

Quelle
Translate

JavaScript ist der einfachste Weg, um die Ortszeit des Clients abzurufen. Ich würde vorschlagen, eine zu verwendenXMLHttpRequestUm die Ortszeit zurückzusenden, und wenn dies fehlschlägt, greifen Sie auf die anhand ihrer IP-Adresse erkannte Zeitzone zurück.

Was die Geolokalisierung angeht, habe ich verwendetMaxMind GeoIPbei mehreren Projekten und es funktioniert gut, obwohl ich nicht sicher bin, ob sie Zeitzonendaten liefern. Es ist ein Service, für den Sie bezahlen und der monatliche Aktualisierungen Ihrer Datenbank bereitstellt. Sie bieten Wrapper in mehreren Web-Sprachen.

Quelle
Translate

Hier ist eine robuste JavaScript-Lösung, um die Zeitzone zu bestimmen, in der sich der Browser befindet.

>>> var timezone = jstz.determine();
>>> timezone.name(); 
"Europe/London"

https://bitbucket.org/pellepim/jstimezonedetect

Quelle
Translate

Hier ist ein vollständigerer Weg.

  1. Holen Sie sich den Zeitzonenversatz für den Benutzer
  2. Testen Sie einige Tage an den Sommerzeitgrenzen, um festzustellen, ob sie sich in einer Zone befinden, in der die Sommerzeit verwendet wird.

Ein Auszug ist unten:

function TimezoneDetect(){
    var dtDate = new Date('1/1/' + (new Date()).getUTCFullYear());
    var intOffset = 10000; //set initial offset high so it is adjusted on the first attempt
    var intMonth;
    var intHoursUtc;
    var intHours;
    var intDaysMultiplyBy;

    // Go through each month to find the lowest offset to account for DST
    for (intMonth=0;intMonth < 12;intMonth++){
        //go to the next month
        dtDate.setUTCMonth(dtDate.getUTCMonth() + 1);

        // To ignore daylight saving time look for the lowest offset.
        // Since, during DST, the clock moves forward, it'll be a bigger number.
        if (intOffset > (dtDate.getTimezoneOffset() * (-1))){
            intOffset = (dtDate.getTimezoneOffset() * (-1));
        }
    }

    return intOffset;
}

TZ und DST von JS erhalten(über Way Back Machine)

Quelle
Translate

Verstehen Sie zunächst, dass die Zeitzonenerkennung in JavaScript nicht perfekt ist. Sie können die lokale bekommenZeitzonenversatzfür ein bestimmtes Datum und eine bestimmte Uhrzeit mitgetTimezoneOffsetauf einer Instanz derDateObjekt, aber das ist nicht ganz das gleiche wie ein vollesIANA-ZeitzonemögenAmerica/Los_Angeles.

Es gibt jedoch einige Optionen, die funktionieren können:

  • Die meisten modernen Browser unterstützen IANA-Zeitzonen bei der Implementierung vonECMAScript Internationalization API, damit Sie dies tun können:

    const tzid = Intl.DateTimeFormat().resolvedOptions().timeZone;
    

    Das Ergebnis ist eine Zeichenfolge, die die IANA-Zeitzoneneinstellung des Computers enthält, auf dem der Code ausgeführt wird.

    Unterstützte Umgebungen werden aufgelistetin der Intl-Kompatibilitätstabelle. Erweitern Sie dieDateTimeFormatAbschnitt, und sehen Sie sich die Funktion mit dem NamenresolvedOptions().timeZone defaults to the host environment.

    • Einige Bibliotheken, wie zLuxonVerwenden Sie diese API, um die Zeitzone durch Funktionen wie zu bestimmenluxon.Settings.defaultZoneName.
  • Wenn Sie eine größere Anzahl von Umgebungen unterstützen müssen, z. B. ältere Webbrowser, können Sie eine Bibliothek verwenden, um eine zu erstellenbegründete Vermutungin der Zeitzone. Sie arbeiten, indem sie zuerst das versuchenIntlAPI, wenn es verfügbar ist und wenn es nicht verfügbar ist, wird die abgefragtgetTimezoneOffsetFunktion derDateObjekt für mehrere verschiedene Zeitpunkte, wobei die Ergebnisse verwendet werden, um eine geeignete Zeitzone aus einem internen Datensatz auszuwählen.

    BeidejsTimezoneDetectundMoment-Zeitzonehaben diese Funktionalität.

    // using jsTimeZoneDetect
    var tzid = jstz.determine().name();
    
    // using moment-timezone
    var tzid = moment.tz.guess();
    

    In beiden Fällen kann das Ergebnis nur als Vermutung betrachtet werden. Die Vermutung mag in vielen Fällen richtig sein, aber nicht in allen.

    Darüber hinaus müssen diese Bibliotheken regelmäßig aktualisiert werden, um der Tatsache entgegenzuwirken, dass viele ältere JavaScript-Implementierungen nur das kennenaktuellSommerzeitregel für ihre lokale Zeitzone.Mehr dazu hier.

Letztendlich ist es ein besserer Ansatz, Ihren Benutzer tatsächlich nach seiner Zeitzone zu fragen. Geben Sie eine Einstellung an, die sie ändern können. Sie können eine der oben genannten Optionen verwenden, um a auszuwählenStandardEinstellung, aber machen Sie es nicht unmöglich, in Ihrer App davon abzuweichen.

Es gibt auch den ganz anderen Ansatz vonnichtVerlassen Sie sich überhaupt auf die Zeitzoneneinstellung des Computers des Benutzers. Wenn Sie stattdessen Längen- und Breitengradkoordinaten erfassen können, können Sie diese mithilfe von in eine Zeitzone auflöseneine dieser Methoden. Dies funktioniert gut auf mobilen Geräten.

Quelle
Translate

Mit dem Ansatz von Unkwntech habe ich eine Funktion mit jQuery und PHP geschrieben. Dies ist getestet und funktioniert!

Auf der PHP-Seite, auf der Sie die Zeitzone als Variable haben möchten, befindet sich dieser Codeausschnitt irgendwo oben auf der Seite:

<?php
    session_start();
    $timezone = $_SESSION['time'];
?>

Dies liest die Sitzungsvariable "Zeit", die wir jetzt erstellen werden.

Auf derselben Seite müssen Sie im <head> zunächst jQuery einschließen:

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>

Fügen Sie auch im <head> unterhalb der jQuery Folgendes ein:

<script type="text/javascript">
    $(document).ready(function() {
        if("<?php echo $timezone; ?>".length==0){
            var visitortime = new Date();
            var visitortimezone = "GMT " + -visitortime.getTimezoneOffset()/60;
            $.ajax({
                type: "GET",
                url: "http://example.org/timezone.php",
                data: 'time='+ visitortimezone,
                success: function(){
                    location.reload();
                }
            });
        }
    });
</script>

Möglicherweise haben Sie es bemerkt oder nicht, aber Sie müssen die URL in Ihre tatsächliche Domain ändern.

Eine letzte Sache. Sie fragen sich wahrscheinlich, was zum Teufel timezone.php ist. Nun, es ist einfach so: (Erstellen Sie eine neue Datei mit dem Namentimezone.phpund mit der obigen URL darauf zeigen)

<?php
    session_start();
    $_SESSION['time'] = $_GET['time'];
?>

Wenn dies korrekt funktioniert, wird zuerst die Seite geladen, das JavaScript ausgeführt und die Seite neu geladen. Sie können dann die Variable $ timezone lesen und zu Ihrem Vergnügen verwenden! Es gibt den aktuellen UTC / GMT-Zeitzonenversatz (GMT -7) oder die Zeitzone zurück, in der Sie sich befinden.

Quelle
Translate

So senden Sie den Zeitzonenoffset als HTTP-Header bei AJAX-Anforderungen mitjQuery

$.ajaxSetup({
    beforeSend: function(xhr, settings) {
        xhr.setRequestHeader("X-TZ-Offset", -new Date().getTimezoneOffset()/60);
    }
});

Sie können auch etwas Ähnliches tun, um den tatsächlichen Zeitzonennamen mithilfe von zu erhaltenmoment.tz.guess();vonhttp://momentjs.com/timezone/docs/#/using-timezones/guessing-user-timezone/

Quelle
Translate

Ich habe hier noch keine detaillierte Antwort gesehen, die die Zeitzone erhält. Sie sollten nicht nach IP-Adresse geocodieren oder PHP (lol) verwenden oder falsch von einem Offset raten müssen.

Erstens ist eine Zeitzone nicht nur ein Versatz von GMT. Es ist ein Gebiet, in dem die Zeitregeln durch lokale Standards festgelegt werden. Einige Länder haben Sommerzeit und schalten die Sommerzeit zu unterschiedlichen Zeiten ein. Normalerweise ist es wichtig, die tatsächliche Zone zu ermitteln, nicht nur den aktuellen Versatz.

Wenn Sie diese Zeitzone speichern möchten, beispielsweise in den Benutzereinstellungen, möchten Sie die Zone und nicht nur den Versatz. Für Echtzeitkonvertierungen spielt es keine Rolle.

Um die Zeitzone mit Javascript zu erhalten, können Sie Folgendes verwenden:

>> new Date().toTimeString();
"15:46:04 GMT+1200 (New Zealand Standard Time)"
//Use some regular expression to extract the time.

Ich fand es jedoch einfacher, einfach dieses robuste Plugin zu verwenden, das die Olsen-formatierte Zeitzone zurückgibt:

https://github.com/scottwater/jquery.detect_timezone

Quelle
Translate

Mit dem PHPdateMit dieser Funktion erhalten Sie das Datum und die Uhrzeit des Servers, auf dem sich die Site befindet. Die einzige Möglichkeit, die Benutzerzeit zu ermitteln, ist die Verwendung von JavaScript.

Ich empfehle Ihnen jedoch, wenn für Ihre Website eine Registrierung erforderlich ist, der Benutzer am besten zu fragen, ob eine Registrierung als Pflichtfeld erforderlich ist. Sie können verschiedene Zeitzonen auf der Registerseite auflisten und in der Datenbank speichern. Wenn sich der Benutzer danach bei der Site anmeldet, können Sie die Standardzeitzone für diese Sitzung gemäß der vom Benutzer ausgewählten Zeitzone festlegen.

Mit der PHP-Funktion können Sie eine bestimmte Zeitzone einstellendate_default_timezone_set. Dadurch wird die angegebene Zeitzone für Benutzer festgelegt.

Grundsätzlich geht die Zeitzone der Benutzer auf die Clientseite, daher müssen wir dafür JavaScript verwenden.

Unten finden Sie das Skript zum Abrufen der Zeitzone von Benutzern mithilfe von PHP und JavaScript.

<?php
    #http://www.php.net/manual/en/timezones.php List of Time Zones
    function showclienttime()
    {
        if(!isset($_COOKIE['GMT_bias']))
        {
?>

            <script type="text/javascript">
                var Cookies = {};
                Cookies.create = function (name, value, days) {
                    if (days) {
                        var date = new Date();
                        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
                        var expires = "; expires=" + date.toGMTString();
                    }
                    else {
                        var expires = "";
                    }
                    document.cookie = name + "=" + value + expires + "; path=/";
                    this[name] = value;
                }

                var now = new Date();
                Cookies.create("GMT_bias",now.getTimezoneOffset(),1);
                window.location = "<?php echo $_SERVER['PHP_SELF'];?>";
            </script>

            <?php

        }
        else {
          $fct_clientbias = $_COOKIE['GMT_bias'];
        }

        $fct_servertimedata = gettimeofday();
        $fct_servertime = $fct_servertimedata['sec'];
        $fct_serverbias = $fct_servertimedata['minuteswest'];
        $fct_totalbias = $fct_serverbias – $fct_clientbias;
        $fct_totalbias = $fct_totalbias * 60;
        $fct_clienttimestamp = $fct_servertime + $fct_totalbias;
        $fct_time = time();
        $fct_year = strftime("%Y", $fct_clienttimestamp);
        $fct_month = strftime("%B", $fct_clienttimestamp);
        $fct_day = strftime("%d", $fct_clienttimestamp);
        $fct_hour = strftime("%I", $fct_clienttimestamp);
        $fct_minute = strftime("%M", $fct_clienttimestamp);
        $fct_second = strftime("%S", $fct_clienttimestamp);
        $fct_am_pm = strftime("%p", $fct_clienttimestamp);
        echo $fct_day.", ".$fct_month." ".$fct_year." ( ".$fct_hour.":".$fct_minute.":".$fct_second." ".$fct_am_pm." )";
    }

    showclienttime();
?>

Aus meiner Sicht ist es jedoch besser, die Benutzer zu fragen, ob eine Registrierung in Ihrem Projekt obligatorisch ist.

Quelle
Translate

JavaScript:

function maketimus(timestampz)
{
    var linktime = new Date(timestampz * 1000);
    var linkday = linktime.getDate();
    var freakingmonths = new Array();

    freakingmonths[0]  = "jan";
    freakingmonths[1]  = "feb";
    freakingmonths[2]  = "mar";
    freakingmonths[3]  = "apr";
    freakingmonths[4]  = "may";
    freakingmonths[5]  = "jun";
    freakingmonths[6]  = "jul";
    freakingmonths[7]  = "aug";
    freakingmonths[8]  = "sep";
    freakingmonths[9]  = "oct";
    freakingmonths[10] = "nov";
    freakingmonths[11] = "dec";

    var linkmonthnum = linktime.getMonth();
    var linkmonth = freakingmonths[linkmonthnum];
    var linkyear = linktime.getFullYear();
    var linkhour = linktime.getHours();
    var linkminute = linktime.getMinutes();

    if (linkminute < 10)
    {
        linkminute = "0" + linkminute;
    }

    var fomratedtime = linkday + linkmonth + linkyear + " " +
                       linkhour + ":" + linkminute + "h";
    return fomratedtime;
}

Geben Sie für diese Funktion einfach Ihre Zeiten im Unix-Zeitstempelformat an. JavaScript kennt bereits die Zeitzone des Benutzers.

So was:

PHP:

echo '<script type="text/javascript">
var eltimio = maketimus('.$unix_timestamp_ofshiz.');
document.write(eltimio);
</script><noscript>pls enable javascript</noscript>';

Dadurch werden die Zeiten immer korrekt angezeigt, basierend auf der Zeitzone, die die Person auf ihrer Computeruhr eingestellt hat. Es ist nicht nötig, irgendjemanden etwas zu fragen und es an Orten aufzubewahren, Gott sei Dank!

Quelle
Translate

Verwenden Sie die IP-Adresse nicht, um den Standort (und damit die Zeitzone) endgültig zu bestimmen. Dies liegt daran, dass IP-Adressen bei NAT, Proxys (die immer beliebter werden) und VPNs nicht unbedingt den tatsächlichen Standort des Benutzers realistisch widerspiegeln, sondern den Standort, an dem sich die IP-Adresse befindet Server, die diese Protokolle implementieren, befinden sich.

Ähnlich wie US-Vorwahlen für die Lokalisierung eines Telefonbenutzers angesichts der Beliebtheit der Nummernübertragbarkeit nicht mehr nützlich sind.

Die IP-Adresse und andere oben gezeigte Techniken sind nützlich füreinen Standard vorschlagendass der Benutzer anpassen / korrigieren kann.

Quelle
Translate

Einfach, verwenden Sie einfach das JavaScriptgetTimezoneOffsetFunktion wie folgt:

-new Date().getTimezoneOffset()/60;
Quelle
Translate

Die Magie scheint alles zu sein

visitortime.getTimezoneOffset()

Das ist cool, das wusste ich nicht. Funktioniert es in Internet Explorer usw.? Von dort aus sollten Sie in der Lage sein, JavaScript für Ajax zu verwenden, Cookies zu setzen, was auch immer. Ich würde wahrscheinlich selbst die Cookie-Route gehen.

Sie müssen dem Benutzer jedoch erlauben, es zu ändern. Wir haben vor einiger Zeit versucht, Geolocation (über maxmind) zu verwenden, um dies zu tun, und es war ziemlich oft falsch - genug, um es nicht wert zu machen, also ließen wir den Benutzer es einfach in seinem Profil festlegen und zeigten Benutzern, die dies tun habe ihre noch nicht eingestellt.

Quelle
Translate

Wenn Sie gerade verwendenOpenIDzur AuthentifizierungEinfache Registrierungserweiterungwürde das Problem für authentifizierte Benutzer lösen (Sie müssen von tz in numerisch konvertieren).

Eine andere Möglichkeit wäre, die Zeitzone aus den Länderpräferenzen des Benutzeragenten abzuleiten. Dies ist eine etwas grobe Methode (funktioniert nicht für en-US), macht aber eine gute Annäherung.

Quelle
Translate

In diesem Artikel (mit Quellcode) wird erläutert, wie die lokalisierte Zeit in einer ASP.NET-Anwendung (VB.NET, C #) ermittelt und verwendet wird:

Es ist Zeit

Kurz gesagt, der beschriebene Ansatz basiert auf JavaScriptgetTimezoneOffsetFunktion, die den Wert zurückgibt, der im Sitzungscookie gespeichert und von CodeBehind zum Anpassen der Zeitwerte zwischen GMT und Ortszeit verwendet wird. Das Schöne ist, dass der Benutzer die Zeitzone nicht angeben muss (der Code erledigt dies automatisch). Es ist mehr involviert (aus diesem Grund verlinke ich auf den Artikel), aber der bereitgestellte Code macht die Verwendung wirklich einfach. Ich vermute, dass Sie die Logik in PHP und andere Sprachen konvertieren können (solange Sie ASP.NET verstehen).

Quelle
man
Translate

Mit JavaScript und PHP ist das ganz einfach:

Obwohl der Benutzer mit seiner internen Uhr und / oder Zeitzone herumspielen kann, bleibt der beste Weg, den ich bisher gefunden habe, um den Offset zu erhaltennew Date().getTimezoneOffset();. Es ist nicht invasiv, verursacht keine Kopfschmerzen und macht es überflüssig, sich auf Dritte zu verlassen.

Angenommen, ich habe einen Tisch,users, das ein Feld enthältdate_created int(13)zum Speichern von Unix-Zeitstempeln;

Einen Kunden annehmencreates a new accountwerden Daten von empfangenpostund ich mussinsert/updatedasdate_created columnmit dem Unix-Zeitstempel des Clients, nicht mit dem des Servers.

Da das timezoneOffset zum Zeitpunkt des Einfügens / Aktualisierens benötigt wird, wird es beim Senden des Formulars als zusätzliches $ _POST-Element übergeben, sodass es nicht mehr in Sitzungen und / oder Cookies gespeichert werden muss und auch keine zusätzlichen Servertreffer erforderlich sind.

var off = (-new Date().getTimezoneOffset()/60).toString();//note the '-' in front which makes it return positive for negative offsets and negative for positive offsets
var tzo = off == '0' ? 'GMT' : off.indexOf('-') > -1 ? 'GMT'+off : 'GMT+'+off;

Angenommen, der Server empfängttzowie$_POST['tzo'];

$ts = new DateTime('now', new DateTimeZone($_POST['tzo']);
$user_time = $ts->format("F j, Y, g:i a");//will return the users current time in readable format, regardless of whether date_default_timezone() is set or not.
$user_timestamp = strtotime($user_time);

Einfügen / Aktualisierendate_created=$user_timestamp.

Beim Abrufen von date_created können Sie den Zeitstempel folgendermaßen konvertieren:

$date_created = // Get from the database
$created = date("F j, Y, g:i a",$date_created); // Return it to the user or whatever

Nun, dieses Beispiel kann den eigenen Bedürfnissen entsprechen, wenn es darum geht, a einzufügenfirstZeitstempel ... Wenn es um einen zusätzlichen Zeitstempel oder eine zusätzliche Tabelle geht, sollten Sie den tzo-Wert zur späteren Bezugnahme in die Benutzertabelle einfügen oder als Sitzung oder als Cookie festlegen.

PS ABER was ist, wenn der Benutzer reist und die Zeitzonen wechselt? Meldet sich bei GMT + 4 an, fährt schnell zu GMT-1 und meldet sich erneut an. Der letzte Login wäre in der Zukunft.

Ich denke ... wir denken zu viel.

Quelle
Translate

Sie können es auf dem Client mit tunMoment-Zeitzoneund senden Sie den Wert an den Server; Beispielnutzung:

> moment.tz.guess()
"America/Asuncion"
Quelle
Translate

Das Abrufen eines gültigen Zeitzonennamens für die TZ-Datenbank in PHP erfolgt in zwei Schritten:

  1. Mit JavaScript erhalten Sie einen Zeitzonenversatz in MinutengetTimezoneOffset. Dieser Offset ist positiv, wenn die lokale Zeitzone hinter UTC liegt, und negativ, wenn sie vor uns liegt. Sie müssen dem Offset also ein entgegengesetztes Vorzeichen hinzufügen.

    var timezone_offset_minutes = new Date().getTimezoneOffset();
    timezone_offset_minutes = timezone_offset_minutes == 0 ? 0 : -timezone_offset_minutes;
    

    Übergeben Sie diesen Offset an PHP.

  2. In PHP konvertieren Sie diesen Offset in einen gültigen Zeitzonennamen mitZeitzonenname_von_abbrFunktion.

    // Just an example.
    $timezone_offset_minutes = -360;  // $_GET['timezone_offset_minutes']
    
    // Convert minutes to seconds
    $timezone_name = timezone_name_from_abbr("", $timezone_offset_minutes*60, false);
    
    // America/Chicago
    echo $timezone_name;</code></pre>
    

Ich habe einen Blog-Beitrag darüber geschrieben:So erkennen Sie die Benutzerzeitzone in PHP. Es enthält auch eine Demo.

Quelle
Translate

Ein einfacher Weg, dies zu tun, ist die Verwendung von:

new Date().getTimezoneOffset();
Quelle
Translate

Eine mögliche Option ist die Verwendung vonDateHeader-Feld, das in definiert istRFC 7231und soll die Zeitzone enthalten. Natürlich kann nicht garantiert werden, dass der Wert wirklich die Zeitzone des Kunden ist, aber es kann ein bequemer Ausgangspunkt sein.

Quelle
Translate

So mache ich es. Dadurch wird die PHP-Standardzeitzone auf die lokale Zeitzone des Benutzers festgelegt. Fügen Sie einfach oben auf all Ihren Seiten Folgendes ein:

<?php
session_start();

if(!isset($_SESSION['timezone']))
{
    if(!isset($_REQUEST['offset']))
    {
    ?>
        <script>
        var d = new Date()
        var offset= -d.getTimezoneOffset()/60;
        location.href = "<?php echo $_SERVER['PHP_SELF']; ?>?offset="+offset;
        </script>
        <?php   
    }
    else
    {
        $zonelist = array('Kwajalein' => -12.00, 'Pacific/Midway' => -11.00, 'Pacific/Honolulu' => -10.00, 'America/Anchorage' => -9.00, 'America/Los_Angeles' => -8.00, 'America/Denver' => -7.00, 'America/Tegucigalpa' => -6.00, 'America/New_York' => -5.00, 'America/Caracas' => -4.30, 'America/Halifax' => -4.00, 'America/St_Johns' => -3.30, 'America/Argentina/Buenos_Aires' => -3.00, 'America/Sao_Paulo' => -3.00, 'Atlantic/South_Georgia' => -2.00, 'Atlantic/Azores' => -1.00, 'Europe/Dublin' => 0, 'Europe/Belgrade' => 1.00, 'Europe/Minsk' => 2.00, 'Asia/Kuwait' => 3.00, 'Asia/Tehran' => 3.30, 'Asia/Muscat' => 4.00, 'Asia/Yekaterinburg' => 5.00, 'Asia/Kolkata' => 5.30, 'Asia/Katmandu' => 5.45, 'Asia/Dhaka' => 6.00, 'Asia/Rangoon' => 6.30, 'Asia/Krasnoyarsk' => 7.00, 'Asia/Brunei' => 8.00, 'Asia/Seoul' => 9.00, 'Australia/Darwin' => 9.30, 'Australia/Canberra' => 10.00, 'Asia/Magadan' => 11.00, 'Pacific/Fiji' => 12.00, 'Pacific/Tongatapu' => 13.00);
        $index = array_keys($zonelist, $_REQUEST['offset']);
        $_SESSION['timezone'] = $index[0];
    }
}

date_default_timezone_set($_SESSION['timezone']);

//rest of your code goes here
?>
Quelle
Translate

Versuchen Sie diesen PHP-Code:

<?php
    $ip = $_SERVER['REMOTE_ADDR'];
    $json = file_get_contents("http://api.easyjquery.com/ips/?ip=" . $ip . "&full=true");
    $json = json_decode($json,true);
    $timezone = $json['LocalTimeZone'];
?>
Quelle