Déterminer le fuseau horaire d'un utilisateur

voix
539

Y at-il moyen standard pour un serveur Web pour être en mesure de déterminer le fuseau horaire d'un utilisateur dans une page web?

Peut-être d'un en-tête HTTP ou d'une partie de la chaîne de l'agent utilisateur?

Créé 01/08/2008 à 00:42
source utilisateur
Dans d'autres langues...                            


25 réponses

voix
302
-new Date().getTimezoneOffset()/60;

La méthode getTimezoneOffset()soustraira votre temps de GMT et retourner le nombre de minutes. Donc , si vous vivez en GMT-8, il retournera 480.

Pour mettre cela en heures, diviser par 60. En outre, notez que le signe est à l'opposé de ce que vous avez besoin - il est le calcul du décalage GMT de votre fuseau horaire, pas votre fuseau horaire est décalé par rapport à l'heure GMT. Pour corriger cela, il suffit de multiplier par -1.

Notez également que w3school dit:

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

Créé 27/11/2009 à 18:52
source utilisateur

voix
174

Le plus populaire (== norme?) Façon de déterminer le fuseau horaire que j'ai vu autour de simplement demander aux utilisateurs eux - mêmes. Si votre site nécessite un abonnement, cela pourrait être enregistré dans les données de profil des utilisateurs. Pour les utilisateurs Anon, les dates pourraient être affichées comme UTC ou GMT ou une telle.

Je ne veux pas être un bêcheur. Il est juste que, parfois, certains problèmes ont des solutions plus fines en dehors de tout contexte de programmation.

Créé 03/08/2008 à 20:30
source utilisateur

voix
77

Il n'y a pas en-têtes HTTP qui rendront compte le fuseau horaire des clients à ce jour bien qu'il ait été suggéré d'inclure dans la spécification HTTP.

Si elle était moi, je probablement essayer d'aller chercher le fuseau horaire en utilisant JavaScript clientside, puis le soumettre au serveur en utilisant Ajax ou quelque chose.

Créé 01/08/2008 à 13:19
source utilisateur

voix
47

Javascript est la meilleure façon d'obtenir l' heure locale du client. Je suggère d' utiliser un XMLHttpRequestrenvoyer l'heure locale, et si cela échoue, revenir à le fuseau horaire détecté en fonction de leur adresse IP.

En ce qui concerne la géolocalisation, je l' ai utilisé MaxMind GeoIP sur plusieurs projets et il fonctionne bien, mais je ne suis pas sûr si elles fournissent des données de fuseau horaire. Il est un service que vous payez et ils fournissent des mises à jour mensuelles à votre base de données. Ils fournissent des emballages en plusieurs langues web.

Créé 01/08/2008 à 16:11
source utilisateur

voix
39

Voici une solution JavaScript robuste pour déterminer le fuseau horaire du navigateur est.

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

https://bitbucket.org/pellepim/jstimezonedetect

Créé 06/08/2012 à 22:22
source utilisateur

voix
34

Voici une façon plus complète.

  1. Obtenez le décalage de fuseau horaire pour l'utilisateur
  2. Testez quelques jours sur les limites DLS pour déterminer si elles sont dans une zone qui utilise DLS.

À l'exception 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 de JS (via Way Back Machine)

Créé 30/03/2011 à 21:48
source utilisateur

voix
26

En utilisant l'approche de Unkwntech, je l'ai écrit une fonction en utilisant jQuery et PHP. Cela a été testé et fonctionne!

Sur la page PHP où vous voulez avoir le fuseau horaire comme une variable, cet extrait de code à un endroit près du haut de la page:

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

Cela lecture que nous sommes maintenant sur le point de créer la variable de session « temps »,.

Sur la même page, dans la, vous devez d'abord inclure jQuery:

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

Toujours dans le, au-dessous du jQuery, collez:

<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://domain.com/timezone.php",
                data: 'time='+ visitortimezone,
                success: function(){
                    location.reload();
                }
            });
        }
    });
</script>

Vous pouvez ou ne pas avoir remarqué, mais vous devez changer l'URL de votre domaine réel.

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

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

Si cela fonctionne correctement, il va d'abord charger la page, exécuter le JavaScript et recharger la page. Vous serez alors en mesure de lire la variable $ fuseau horaire et l'utiliser pour votre plaisir! Il retourne l'heure UTC / GMT actuelle zone de décalage (GMT -7) ou tout autre fuseau horaire que vous êtes.

Créé 09/04/2011 à 20:16
source utilisateur

voix
18

Tout d' abord, comprendre que la détection de fuseau horaire en JavaScript est imparfait. Vous pouvez obtenir la locale décalage de fuseau horaire pour une date et une heure à l' aide getTimezoneOffsetd'une instance de l' Dateobjet, mais ce n'est pas tout à fait identique à une pleine zone de temps IANA comme America/Los_Angeles.

Il y a quelques options qui peuvent fonctionner si:

  • La plupart des navigateurs modernes prennent en charge les fuseaux horaires de l' IANA dans leur mise en œuvre de l' API ECMAScript Internationalisation , vous pouvez le faire:

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

    Le résultat est une chaîne contenant le paramètre de fuseau horaire IANA de l'ordinateur où le code est en cours d'exécution.

    Environnements pris en charge sont répertoriés dans le tableau de compatibilité Intl . Développez la DateTimeFormatsection, et regardez la fonctionnalité nommée resolvedOptions().timeZone defaults to the host environment.

  • Si vous avez besoin de soutenir un ensemble plus large d'environnements, tels que les anciens navigateurs Web, vous pouvez utiliser une bibliothèque pour faire une supposition au fuseau horaire. Ils travaillent en essayant d' abord l' IntlAPI si elle est disponible, et quand il est pas disponible, ils interrogent la getTimezoneOffsetfonction de l' Dateobjet, pour plusieurs points différents dans le temps, en utilisant les résultats de choisir un fuseau horaire approprié à partir d' un ensemble de données interne.

    Les deux jsTimezoneDetect et moment de -fuseau horaire ont 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é comme une estimation. La supposition peut être correcte dans de nombreux cas, mais pas tous.

    De plus, ces bibliothèques doivent être mis à jour périodiquement pour contrer le fait que de nombreuses implémentations JavaScript plus anciens ne sont conscients de l' actuelle règle de l' heure d'été pour leur fuseau horaire. Plus de détails sur ce ici.

En fin de compte, une meilleure approche est de demander réellement votre utilisateur pour leur fuseau horaire. Fournir un cadre qu'ils peuvent changer. Vous pouvez utiliser l' une des options ci - dessus pour choisir un défaut réglage, mais ne rend pas impossible de déroger à cela dans votre application.

Il y a aussi l'approche tout à fait différente de ne pas compter sur le réglage du fuseau horaire de l'ordinateur de l'utilisateur du tout. Au lieu de cela, si vous pouvez recueillir les coordonnées de latitude et de longitude, vous pouvez résoudre ceux à une zone de temps en utilisant une de ces méthodes . Cela fonctionne bien sur les appareils mobiles.

Créé 25/03/2014 à 04:47
source utilisateur

voix
18

Pour soumettre le décalage horaire comme un en- tête HTTP sur les requêtes AJAX avec jQuery

$.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 de fuseau horaire réel à l'aide moment.tz.guess();de http://momentjs.com/timezone/docs/#/using-timezones/guessing-user-timezone/

Créé 13/09/2012 à 03:05
source utilisateur

voix
18

Je n'ai pas encore vu une réponse détaillée ici qui obtient le fuseau horaire. Vous ne devriez pas avoir à géocodage par adresse IP ou utiliser PHP (lol) ou de deviner correctement à partir d'un décalage.

Tout d'abord une zone de temps est non seulement un décalage de GMT. Il est une zone de terrain où les règles de temps sont fixés par les normes locales. Certains pays ont des économies de lumière du jour, et basculeront sur l'heure d'été à des moments différents. Il est généralement important d'obtenir la zone réelle, non seulement le courant de décalage.

Si vous avez l'intention de conserver ce fuseau horaire, par exemple dans les préférences de l'utilisateur que vous voulez la zone et non pas seulement le décalage. Pour les conversions en temps réel, il ne sera 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 je l'ai trouvé plus facile à utiliser simplement ce plugin robuste qui retourne le fuseau horaire Olsen format:

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

Créé 30/08/2012 à 06:08
source utilisateur

voix
16

Facile, il suffit d' utiliser le code JavaScript getTimezoneOffsetfonction comme ceci:

-new Date().getTimezoneOffset()/60;
Créé 27/05/2012 à 18:25
source utilisateur

voix
16

Avec la fonction PHP date que vous aurez le temps de la date du serveur sur lequel le site est situé. La seule façon d'obtenir le temps de l'utilisateur est d'utiliser JavaScript.

Mais je vous suggère, si votre site a inscription alors la meilleure façon est de demander à l' utilisateur tout enregistrement comme champ obligatoire. Vous pouvez lister différents fuseaux horaires en page registre et enregistrer que , dans la base de données. Après cela , si la connexion de l' utilisateur sur le site, vous pouvez définir le fuseau horaire par défaut pour cette session selon utilisateurs de fuseau horaire sélectionné. Vous pouvez définir une zone de temps spécifique en utilisant la fonction PHP date_default_timezone_set. Cet ensemble de la zone de temps spécifiée pour les utilisateurs.

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

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 est préférable de demander aux utilisateurs si l'inscription est obligatoire dans votre projet.

Créé 16/09/2010 à 06:59
source utilisateur

voix
16

Tout le monde sait de tous les services qui correspondent à IP à l'emplacement géographique

Eh bien, la chance pour vous cette réponse peut être trouvée sur notre propre site web stackoverflow: Comment obtenir le pays selon un certain IP?

spoiler: http://www.hostip.info/use.html

Créé 04/08/2008 à 12:11
source utilisateur

voix
15

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

simplement fournir votre temps au format UNIX Timestamp à 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>';

ce sera toujours montrer le temps correctement en fonction du fuseau horaire de la personne a mis sur son horloge de l'ordinateur, pas besoin de demander quoi que ce soit à tout le monde et l'enregistrer dans des endroits Dieu merci!

Créé 28/08/2011 à 00:00
source utilisateur

voix
14

Ne pas utiliser l'adresse IP pour déterminer définitivement l'emplacement (et le fuseau horaire de hense) - c'est parce qu'avec NAT, proxies (de plus en plus populaire), et réseaux privés virtuels, les adresses IP ne reflètent de façon réaliste pas nécessairement position réelle de l'utilisateur, mais l'endroit où les serveurs la mise en œuvre de ces protocoles résident.

Semblable à la façon des codes de zone pour localiser un utilisateur de téléphone ne sont plus utiles, étant donné la popularité de la portabilité du numéro.

IP et d' autres techniques indiquées ci - dessus sont utiles pour suggérer un défaut que l'utilisateur peut ajuster / corriger.

Créé 02/01/2013 à 19:05
source utilisateur

voix
14

La magie tout semble être en

visitortime.getTimezoneOffset()

C'est cool, je ne savais pas à ce sujet. Est-ce que ça fonctionne dans IE, etc? De là, vous devriez pouvoir utiliser JS à Ajax, définir des cookies, peu importe. Je serais probablement aller la route cookie moi-même.

Vous aurez besoin de permettre à l'utilisateur de changer cependant. Nous avons essayé d'utiliser la géolocalisation (via MaxMind) pour faire un certain temps il y a, et il était erroné assez souvent - assez pour le rendre pas la peine de faire, donc nous avons juste permettre à l'utilisateur qu'il trouve dans leur profil, et montrer un avis aux utilisateurs qui ne sont pas encore mis leur.

Créé 03/08/2008 à 21:40
source utilisateur

voix
11

Une façon simple de le faire est à l'aide:

new Date().getTimezoneOffset();
Créé 01/12/2011 à 12:08
source utilisateur

voix
11

Si vous arrive d'utiliser OpenID pour l' authentification, l' extension d'enregistrement simple résoudrait le problème pour les utilisateurs authentifiés (Vous devrez convertir tz à numérique).

Une autre option serait de déduire le fuseau horaire du pays de l'agent utilisateur de préférence. Cette méthode est un peu brut (ne fonctionnera pas pour en-US), mais fait une bonne approximation.

Créé 30/08/2008 à 10:29
source utilisateur

voix
10

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

Il est grand temps

En bref, l'approche décrite repose sur la JavaScript getTimezoneOffsetfonction, qui renvoie la valeur qui est enregistrée dans le cookie de session et utilisé par code-behind pour ajuster les valeurs de temps entre l' heure GMT et heure locale. La bonne chose est que l'utilisateur n'a pas besoin de spécifier le fuseau horaire (le code fait automatiquement). Il est plus impliqué (ce qui est la raison pour laquelle je lien vers l'article), mais le code fourni, il est vraiment facile à utiliser. Je pense que vous pouvez convertir la logique de PHP et d' autres langues (aussi longtemps que vous comprenez ASP.NET).

Créé 25/05/2010 à 01:11
source utilisateur

voix
8

Simple avec JSet PHP:

Même si l'utilisateur peut jouer avec son horloge interne et / ou le fuseau horaire, la meilleure façon que j'ai trouvé jusqu'à présent, pour obtenir le décalage, reste new Date().getTimezoneOffset();. Sa non-invasive, ne donne pas des maux tête et élimine la nécessité de recourir à des tiers.

Dis i ai une table usersqui contient un champ date_created int(13)pour stocker l' horodatage UNIX;

En supposant un client creates a new account, les données sont reçues par post, et je dois insert/updatele date_created columnavec l'horodatage unix du client, et non du serveur.

Étant donné que le timezoneOffset est nécessaire au moment de l'insertion / mise à jour, il est passé comme un élément supplémentaire de $ _POST lorsque le client soumet le formulaire, ce qui élimine la nécessité de stocker dans des sessions et / ou les cookies, et aucun serveur supplémentaire frappe soit.

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;

Supposons que le serveur reçoit tzocomme $_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 / mise à jour date_created=$user_timestamp.

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

$date_created = //get from db
$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, en ce qui concerne l' insertion d' un firsthorodatage ... Quand il vient à un horodatage supplémentaire ou une table, u peut vouloir envisager d' insérer la valeur tzo dans la table des utilisateurs pour référence future ou le mettre en session ou un cookie.

PS mais si l'utilisateur se déplace et passe timezones. Se connecte au GMT + 4, se répandent rapidement à GMT-1 et les journaux à nouveau. Dernière connexion serait à l'avenir.

Je pense que ... nous pensons trop.

Créé 15/09/2014 à 02:19
source utilisateur

voix
7

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'];
?>
Créé 30/07/2012 à 09:08
source utilisateur

voix
7

Voici comment je le fais. Cela va régler le fuseau horaire par défaut de PHP fuseau horaire local de l'utilisateur. Il suffit de coller ce qui suit sur le dessus 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
?>
Créé 28/01/2012 à 09:21
source utilisateur

voix
6

Une option possible est d'utiliser le Datechamp d' en- tête, qui est défini dans la RFC 7231 et est censé inclure le fuseau horaire. Bien sûr, il est pas garanti que la valeur est vraiment le fuseau horaire du client, mais il peut être un bon point de départ.

Créé 09/09/2014 à 00:25
source utilisateur

voix
5

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

1) Avec Javascript, obtenir Décalage horaire en minutes par getTimezoneOffset. Ce décalage sera positif si le fuseau horaire local est derrière UTC et négative si elle 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;

Passez ce décalage à PHP.

2) En PHP convertir ce décalage dans un nom de fuseau horaire valide avec timezone_name_from_abbr fonction.

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

J'ai écrit un billet de blog sur elle: http://usefulangle.com/post/31/detect-user-browser-timezone-name-in-php Il contient une démo aussi.

Créé 10/01/2017 à 11:56
source utilisateur

voix
5

vous pouvez le faire sur le client avec un moment-fuseau horaire et envoyer la valeur au serveur; Exemple d' utilisation:

> moment.tz.guess()
"America/Asuncion"
Créé 13/09/2016 à 06:19
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more