html - Déterminer le fuseau horaire d'un utilisateur

Translate

Existe-t-il un moyen standard pour un serveur Web de pouvoir déterminer le fuseau horaire d'un utilisateur dans une page Web?

Peut-être à partir d'un en-tête HTTP ou d'une partie duuser-agentchaîne?

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

Toutes les réponses

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

La méthodegetTimezoneOffset()va soustraire votre temps de GMT et renvoyer le nombre de minutes. Donc, si vous vivez à GMT-8, il retournera 480.

Pour mettre cela en heures, divisez par 60. Notez également que le signe est le contraire de ce dont vous avez besoin - il calcule le décalage GMT par rapport à votre fuseau horaire, et non le décalage de votre fuseau horaire par rapport à GMT. Pour résoudre ce problème, multipliez simplement par -1.

Notez également quew3schooldit:

La valeur renvoyée n'est pas une constante, en raison de la pratique de l'utilisation de l'heure d'été.

La source
Translate

Le moyen le plus populaire (== standard?) De déterminer le fuseau horaire que j'ai vu est simplementdemander aux utilisateurs eux-mêmes.Si votre site Web nécessite un abonnement, cela peut être enregistré dans les données de profil des utilisateurs. Pour les utilisateurs anon, les dates peuvent être affichées comme UTC ou GMT ou quelque chose du genre.

Je n'essaye pas d'être un aleck intelligent. C'est juste que parfois certains problèmes ont des solutions plus fines en dehors de tout contexte de programmation.

La source
Translate

Il n'y a pas d'en-tête HTTP qui signalera le fuseau horaire des clients jusqu'à présent, bien qu'il ait été suggéré de l'inclure dans la spécification HTTP.

Si c'était moi, j'essaierais probablement de récupérer le fuseau horaire en utilisant JavaScript côté client, puis de le soumettre au serveur en utilisant Ajax ou quelque chose.

La source
Translate

JavaScript est le moyen le plus simple d'obtenir l'heure locale du client. Je suggérerais d'utiliser unXMLHttpRequestpour renvoyer l'heure locale, et si cela échoue, revenez au fuseau horaire détecté en fonction de leur adresse IP.

En ce qui concerne la géolocalisation, j'ai utiliséMaxMind GeoIPsur plusieurs projets et cela fonctionne bien, même si je ne suis pas sûr qu'ils fournissent des données de fuseau horaire. C'est un service pour lequel vous payez et ils fournissent des mises à jour mensuelles de votre base de données. Ils fournissent des wrappers dans plusieurs langues Web.

La source
Translate

Voici une solution JavaScript robuste pour déterminer le fuseau horaire dans lequel se trouve le navigateur.

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

https://bitbucket.org/pellepim/jstimezonedetect

La source
Translate

Voici un moyen plus complet.

  1. Obtenez le décalage du fuseau horaire pour l'utilisateur
  2. Testez certains jours sur les limites de l'heure d'été pour déterminer si elles se trouvent dans une zone qui utilise l'heure d'été.

Un extrait est ci-dessous:

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;
}

Obtenir TZ et DST à partir de JS(via Way Back Machine)

La source
Translate

Tout d'abord, comprenez que la détection du fuseau horaire dans JavaScript est imparfaite. Vous pouvez obtenir le localdécalage de fuseau horairepour une date et une heure particulières en utilisantgetTimezoneOffsetsur une instance duDateobjet, mais ce n'est pas tout à fait la même chose qu'un pleinFuseau horaire IANAcommeAmerica/Los_Angeles.

Cependant, certaines options peuvent fonctionner:

  • La plupart des navigateurs modernes prennent en charge les fuseaux horaires IANA dans leur implémentationAPI d'internationalisation ECMAScript, vous pouvez donc faire ceci:

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

    Le résultat est une chaîne contenant le paramètre de fuseau horaire IANA de l'ordinateur sur lequel le code est exécuté.

    Les environnements pris en charge sont répertoriésdans le tableau de compatibilité Intl. Élargir leDateTimeFormatsection, et regardez la fonctionnalité nomméeresolvedOptions().timeZone defaults to the host environment.

    • Certaines bibliothèques, telles queLuxonutilisez cette API pour déterminer le fuseau horaire grâce à des fonctions telles queluxon.Settings.defaultZoneName.
  • Si vous avez besoin de prendre en charge un ensemble d'environnements plus large, tels que des navigateurs Web plus anciens, vous pouvez utiliser une bibliothèque pour créer unsupposition éclairéeau fuseau horaire. Ils fonctionnent en essayant d'abord leIntlAPI si elle est disponible, et lorsqu'elle n'est pas disponible, ils interrogent legetTimezoneOffsetfonction de laDateobjet, pour plusieurs moments différents, en utilisant les résultats pour choisir un fuseau horaire approprié à partir d'un ensemble de données interne.

    Tous les deuxjsTimezoneDetectetmoment-fuseau horaireavoir cette fonctionnalité.

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

    Dans les deux cas, le résultat ne peut être considéré que comme une supposition. La supposition peut être correcte dans de nombreux cas, mais pas tous.

    De plus, ces bibliothèques doivent être périodiquement mises à jour pour compenser le fait que de nombreuses implémentations JavaScript plus anciennes ne connaissent que leactuelrègle d'heure d'été pour leur fuseau horaire local.Plus de détails à ce sujet ici.

En fin de compte, une meilleure approche consiste à demander à votre utilisateur son fuseau horaire. Fournissez un paramètre qu'ils peuvent modifier. Vous pouvez utiliser l'une des options ci-dessus pour choisir undéfautréglage, mais ne vous empêchez pas de vous en écarter dans votre application.

Il y a aussi l'approche entièrement différente dene pasen se fondant sur le paramètre de fuseau horaire de l'ordinateur de l'utilisateur. Au lieu de cela, si vous pouvez rassembler les coordonnées de latitude et de longitude, vous pouvez les résoudre en un fuseau horaire en utilisantune de ces méthodes. Cela fonctionne bien sur les appareils mobiles.

La source
Translate

En utilisant l'approche d'Unkwntech, j'ai écrit une fonction en utilisant jQuery et PHP. Ceci est testé et fonctionne!

Sur la page PHP où vous souhaitez avoir le fuseau horaire en tant que variable, placez cet extrait de code quelque part en haut de la page:

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

Cela lira la variable de session "time", que nous allons maintenant créer.

Sur la même page, dans le <head>, vous devez tout d'abord inclure jQuery:

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

Toujours dans le <head>, sous le jQuery, collez ceci:

<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>

Vous l'avez peut-être remarqué ou non, mais vous devez modifier l'URL de votre domaine réel.

Une dernière chose. Vous vous demandez probablement ce qu'est le diable timezone.php. Eh bien, c'est simplement ceci: (créez un nouveau fichier appelétimezone.phpet pointez-le avec l'URL ci-dessus)

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

Si cela fonctionne correctement, il chargera d'abord la page, exécutera le JavaScript et rechargera la page. Vous pourrez alors lire la variable $ timezone et l'utiliser à votre guise! Il renvoie le décalage du fuseau horaire UTC / GMT actuel (GMT -7) ou quel que soit le fuseau horaire dans lequel vous vous trouvez.

La source
Translate

Pour soumettre le décalage du fuseau horaire en tant qu'en-tête HTTP sur les requêtes AJAX avecjQuery

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

Vous pouvez également faire quelque chose de similaire pour obtenir le nom réel du fuseau horaire en utilisantmoment.tz.guess();dehttp://momentjs.com/timezone/docs/#/using-timezones/guessing-user-timezone/

La source
Translate

Je n'ai toujours pas vu de réponse détaillée ici qui donne le fuseau horaire. Vous ne devriez pas avoir besoin de géocoder par adresse IP ou d'utiliser PHP (lol) ou de deviner incorrectement à partir d'un décalage.

Premièrement, un fuseau horaire n'est pas seulement un décalage par rapport à GMT. C'est un territoire dans lequel les règles de temps sont fixées par les normes locales. Certains pays ont l'heure d'été et activeront l'heure d'été à des heures différentes. Il est généralement important d'obtenir la zone réelle, pas seulement le décalage actuel.

Si vous avez l'intention de stocker ce fuseau horaire, par exemple dans les préférences utilisateur, vous voulez la zone et pas seulement le décalage. Pour les conversions en temps réel, cela n'a pas beaucoup d'importance.

Maintenant, pour obtenir le fuseau horaire avec javascript, vous pouvez utiliser ceci:

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

Cependant, j'ai trouvé plus facile d'utiliser simplement ce plugin robuste qui renvoie le fuseau horaire au format Olsen:

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

La source
Translate

Avec le PHPdatefonction, vous obtiendrez la date et l'heure du serveur sur lequel se trouve le site. La seule façon d'obtenir le temps de l'utilisateur est d'utiliser JavaScript.

Mais je vous suggère de le faire, si votre site a une inscription requise, le meilleur moyen est de demander à l'utilisateur de faire de l'inscription comme champ obligatoire. Vous pouvez répertorier différents fuseaux horaires dans la page d'enregistrement et les enregistrer dans la base de données. Après cela, si l'utilisateur se connecte au site, vous pouvez définir le fuseau horaire par défaut pour cette session en fonction du fuseau horaire sélectionné par les utilisateurs.

Vous pouvez définir n'importe quel fuseau horaire spécifique à l'aide de la fonction PHPdate_default_timezone_set. Cela définit le fuseau horaire spécifié pour les utilisateurs.

Fondamentalement, le fuseau horaire des utilisateurs est du côté client, nous devons donc utiliser JavaScript pour cela.

Vous trouverez ci-dessous le script pour obtenir le fuseau horaire des utilisateurs en utilisant PHP et 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();
?>

Mais selon mon point de vue, il vaut mieux demander aux utilisateurs si l'inscription est obligatoire dans votre projet.

La source
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;
}

Fournissez simplement vos heures au format d'horodatage Unix à cette fonction; JavaScript connaît déjà le fuseau horaire de l'utilisateur.

Comme ça:

PHP:

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

Cela affichera toujours les heures correctement en fonction du fuseau horaire que la personne a défini sur l'horloge de son ordinateur. Il n'est pas nécessaire de demander quoi que ce soit à qui que ce soit et de l'enregistrer dans des endroits, Dieu merci!

La source
Translate

N'utilisez pas l'adresse IP pour déterminer définitivement l'emplacement (et donc le fuseau horaire) - c'est parce qu'avec le NAT, les proxies (de plus en plus populaires) et les VPN, les adresses IP ne reflètent pas nécessairement de manière réaliste l'emplacement réel de l'utilisateur, mais l'emplacement auquel le les serveurs mettant en œuvre ces protocoles résident.

Semblable à la façon dont les indicatifs régionaux américains ne sont plus utiles pour localiser un utilisateur de téléphone, étant donné la popularité de la portabilité des numéros.

L'adresse IP et les autres techniques présentées ci-dessus sont utiles poursuggérant un défautque l'utilisateur peut ajuster / corriger.

La source
Translate

Facile, utilisez simplement le JavaScriptgetTimezoneOffsetfonctionne comme ça:

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

La magie semble être dans tout

visitortime.getTimezoneOffset()

C'est cool, je n'en savais rien. Fonctionne-t-il dans Internet Explorer, etc.? De là, vous devriez pouvoir utiliser JavaScript pour Ajax, définir des cookies, peu importe. J'irais probablement moi-même sur la route des cookies.

Vous devrez cependant autoriser l'utilisateur à le modifier. Nous avons essayé d'utiliser la géolocalisation (via maxmind) pour le faire il y a quelque temps, et c'était assez souvent faux - assez pour que cela ne vaille pas la peine de le faire, nous laissons donc simplement l'utilisateur le définir dans son profil et montrons un avis aux utilisateurs qui n'ont pas encore défini le leur.

La source
Translate

Si vous utilisezOpenIDpour l'authentification,Extension d'inscription simplerésoudrait le problème pour les utilisateurs authentifiés (vous devrez convertir de tz en numérique).

Une autre option consisterait à déduire le fuseau horaire de la préférence de pays de l'agent utilisateur. C'est une méthode un peu grossière (ne fonctionnera pas pour en-US), mais constitue une bonne approximation.

La source
Translate

Voici un article (avec le code source) qui explique comment déterminer et utiliser l'heure localisée dans une application ASP.NET (VB.NET, C #):

Il est temps

En bref, l'approche décrite repose sur le JavaScriptgetTimezoneOffset, qui renvoie la valeur enregistrée dans le cookie de session et utilisée par code-behind pour ajuster les valeurs d'heure entre GMT et l'heure locale. La bonne chose est que l'utilisateur n'a pas besoin de spécifier le fuseau horaire (le code le fait automatiquement). Il est plus impliqué (c'est pourquoi je lie à l'article), mais le code fourni le rend vraiment facile à utiliser. Je soupçonne que vous pouvez convertir la logique en PHP et dans d'autres langages (tant que vous comprenez ASP.NET).

La source
man
Translate

C'est simple avec JavaScript et PHP:

Même si l'utilisateur peut jouer avec son horloge interne et / ou son fuseau horaire, le meilleur moyen que j'ai trouvé jusqu'à présent, pour obtenir le décalage, restenew Date().getTimezoneOffset();. Il est non invasif, ne donne pas de maux de tête et élimine le besoin de compter sur des tiers.

Dis que j'ai une table,users, qui contient un champdate_created int(13), pour stocker les horodatages Unix;

En supposant un clientcreates a new account, les données sont reçues parpost, et j'ai besoin deinsert/updateladate_created columnavec l'horodatage Unix du client, pas celui du serveur.

Étant donné que timezoneOffset est nécessaire au moment de l'insertion / de la mise à jour, il est passé en tant qu'élément $ _POST supplémentaire lorsque le client soumet le formulaire, éliminant ainsi le besoin de le stocker dans des sessions et / ou des cookies, et aucun serveur supplémentaire ne frappe non plus.

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;

Dites que le serveur reçoittzocomme$_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);

Insérer / mettre à jourdate_created=$user_timestamp.

Lors de la récupération de date_created, vous pouvez convertir l'horodatage comme suit:

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

Maintenant, cet exemple peut répondre à ses besoins, lorsqu'il s'agit d'insérerfirsthorodatage ... Quand il s'agit d'un horodatage supplémentaire, ou d'une table, vous pouvez envisager d'insérer la valeur tzo dans la table des utilisateurs pour référence future, ou de la définir comme session ou comme cookie.

PS MAIS que faire si l'utilisateur se déplace et change de fuseau horaire. Se connecte à GMT + 4, voyage rapidement à GMT-1 et se reconnecte. La dernière connexion aurait lieu dans le futur.

Je pense ... nous réfléchissons trop.

La source
Translate

Vous pouvez le faire sur le client avecmoment-fuseau horaireet envoyer la valeur au serveur; utilisation de l'échantillon:

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

Obtenir un nom de fuseau horaire de base de données TZ valide en PHP est un processus en deux étapes:

  1. Avec JavaScript, obtenez un décalage du fuseau horaire en quelques minutesgetTimezoneOffset. Ce décalage sera positif si le fuseau horaire local est derrière UTC et négatif s'il est en avance. Vous devez donc ajouter un signe opposé au décalage.

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

    Transmettez ce décalage à PHP.

  2. En PHP, convertissez ce décalage en un nom de fuseau horaire valide avectimezone_name_from_abbrfonction.

    // 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>
    

J'ai écrit un article de blog dessus:Comment détecter le fuseau horaire de l'utilisateur en PHP. Il contient également une démo.

La source
Translate

Un moyen simple de le faire est d'utiliser:

new Date().getTimezoneOffset();
La source
Translate

Une option possible consiste à utiliser leDatechamp d'en-tête, qui est défini dansRFC 7231et est censé inclure le fuseau horaire. Bien sûr, il n'est pas garanti que la valeur soit vraiment le fuseau horaire du client, mais cela peut être un point de départ pratique.

La source
Translate

Voici comment je fais. Cela définira le fuseau horaire par défaut de PHP sur le fuseau horaire local de l'utilisateur. Collez simplement ce qui suit en haut de toutes vos pages:

<?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
?>
La source
Translate

Essayez ce code PHP:

<?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'];
?>
La source