Határozza meg a felhasználó időzóna

szavazat
539

Van-e bármilyen szabványos módon egy webszerver, hogy képes legyen meghatározni a felhasználó az időzóna egy weboldalon?

Talán egy HTTP fejléc vagy annak egy részét a user-agent karakterláncot?

A kérdést 01/08/2008 00:42
a forrás felhasználó
Más nyelveken...                            


25 válasz

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

A módszer getTimezoneOffset()akkor vonja ki az időt a GMT és visszatér a percek számát. Tehát, ha él a GMT-8, akkor vissza 480.

Ahhoz, hogy ezt figyelembe órán megosztottságot 60. Ugyancsak megjegyezzük, hogy a jel az ellenkezője annak, amit meg kell - ez kiszámítása GMT azon tolva az időzónát, és nem az időzónát van tolva GMT. Ennek kiküszöböléséhez egyszerűen szorozza -1.

Szintén fontos megjegyezni, hogy w3school mondja:

A visszaadott érték nem állandó, mert a gyakorlat segítségével a nyári időszámítás.

Válaszolt 27/11/2009 18:52
a forrás felhasználó

szavazat
174

A legnépszerűbb (== szabvány?) Módon történő meghatározása időzóna láttam körül egyszerűen azt kéri a felhasználók maguk. Ha a honlap igényel előfizetés, ezt is meg lehetne menteni a felhasználói profil adatok. Mert mindjárt felhasználók számára, a dátumok is megjelenik, mint UTC vagy GMT, vagy valami hasonló.

Nem akarom, hogy egy okoskodó. Csak annyi, hogy néha bizonyos problémák finomabb megoldásokat kívül semmilyen programozás keretében.

Válaszolt 03/08/2008 20:30
a forrás felhasználó

szavazat
77

Nincsenek HTTP-fejléceket, hogy jelenteni fogja az ügyfelek időzónát eddig bár azt javasolták, hogy azt a HTTP specifikáció.

Ha én azt valószínűleg megpróbálja letölteni az időzónát használja ügyféloldali JavaScript majd benyújtja azt a szervert Ajax, vagy valami.

Válaszolt 01/08/2008 13:19
a forrás felhasználó

szavazat
47

Javascript-re van a legegyszerűbb módja annak, hogy az ügyfél a helyi időt. Azt javasoljuk, hogy használja az XMLHttpRequestküldje vissza a helyi időt, és ha ez nem sikerül, esik vissza az időzónát alapján határozzuk IP címét.

Ami a földrajzi helymeghatározás, amit használnak MaxMind GeoIP több projekt és jól működik, bár nem vagyok biztos abban, hogy az általuk nyújtott időzónát adatokat. Ez egy szolgáltatás, amit fizetni, és a havi frissítéseket az adatbázisba. Ők biztosítják a csomagolást több webes nyelven.

Válaszolt 01/08/2008 16:11
a forrás felhasználó

szavazat
39

Itt van egy erőteljes JavaScript megoldás, hogy meghatározza az időzóna szerint a böngésző.

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

https://bitbucket.org/pellepim/jstimezonedetect

Válaszolt 06/08/2012 22:22
a forrás felhasználó

szavazat
34

Itt van egy teljesebb módon.

  1. Kap az időzónát ellensúlyozza a felhasználó számára
  2. Vizsgáljuk néhány napra DLS határait annak megállapítására, hogy azok egy terület, amely DLS.

Kivéve alábbiakban:

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

Első TZ és DST JS (via Way Back Machine)

Válaszolt 30/03/2011 21:48
a forrás felhasználó

szavazat
26

Segítségével Unkwntech megközelítése, írtam egy funkciót jQuery és PHP. Ezt tesztelt, és nem működik!

A PHP oldalt, amelyre szeretné, hogy az időzónát, mint egy változó, ezt a kódrészletet valahol a lap tetején:

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

Ez fogja olvasni a munkamenet változót „idő”, amely most körülbelül létrehozni.

Ugyanazon az oldalon, a, meg kell először tartalmaznia jQuery:

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

Szintén a alatt a jQuery, be ezt:

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

Lehet, vagy nem vette észre, de meg kell változtatni az url, hogy a tényleges tartomány.

Egy utolsó dolog. Akkor valószínűleg kíváncsi, mi a fene van timezone.php. Nos, ez egyszerűen így: (hozzon létre egy új fájlt úgynevezett timezone.php és pont ez a fenti url)

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

Ha ez működik rendesen, akkor először betölteni az oldalt, hajtsa végre a JavaScript, és újratölti az oldalt. Ön képes lesz majd olvasni a $ időzónát változó, és ez alapján az öröm! Visszaadja az aktuális UTC / GMT időzóna (GMT -7), vagy bármi időzóna van.

Válaszolt 09/04/2011 20:16
a forrás felhasználó

szavazat
18

Először is, megértjük, hogy az időzóna detektálás JavaScript tökéletlen. Lehet kapni a helyi időzóna egy adott dátumot és az időt getTimezoneOffsetegy példányát az Dateobjektum, de ez nem teljesen ugyanaz, mint a teljes IANA időzóna , mint America/Los_Angeles.

Van néhány lehetőség, amely képes együttműködni de:

  • A legtöbb modern böngésző támogatja IANA időzónák azok végrehajtásának ECMAScript Nemzetközivé API , így meg tudod csinálni ezt:

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

    Az eredmény egy karakterlánc, amely a IANA időzóna beállítása a számítógépen, ahol a kód fut.

    Támogatott környezetek vannak felsorolva az Intl kompatibilitási táblázatot . Bontsa ki a DateTimeFormatszakaszt, és nézd meg a szolgáltatás neve resolvedOptions().timeZone defaults to the host environment.

  • Ha meg kell támogatni egy szélesebb körű környezetben, például régebbi böngészőt, akkor a könyvtár, hogy egy tanult hiszem az időzónát. Dolgoznak az első kipróbálása IntlAPI, ha ez lehetséges, és ha ez nem áll rendelkezésre, akkor kérdezze le a getTimezoneOffsetfunkciója a Datetárgyat, különböző időpontokban, eredményeinek felhasználásával kiválasztani a megfelelő időzónát belső adathalmaz.

    Mindkét jsTimezoneDetect és pillanat-időzónát rendelkezik ezzel a funkcióval.

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

    Mindkét esetben az eredmény csak úgy, mint kitalálni. A becslés helytálló is lehet sok esetben, de nem mindet.

    Továbbá, ezek a könyvtárak kell rendszeresen frissített, hogy ellensúlyozzák a tény, hogy sok idősebb JavaScript implementáció csak tisztában van a jelenlegi nyári időszámítás szabály a helyi időzónát. További részletek itt.

Végül, egy jobb megközelítés az, hogy ténylegesen kérdezze meg felhasználónál az időzónát. Adjon meg egy beállítást, hogy meg tudják változtatni. Akkor használja a fenti lehetőségek közül lehet választani egy alapértelmezett beállítás, de nem teszi lehetetlenné, hogy eltérjenek, hogy az alkalmazásban.

Van még a teljesen más megközelítést nem támaszkodva az időzóna beállítását a felhasználó számítógépén egyáltalán. Ehelyett, ha lehet gyűjteni szélességi és hosszúsági fokok, akkor oldja fel ezeket az időzóna használatával az alábbi módszerek egyikét . Ez jól működik a mobileszközökön.

Válaszolt 25/03/2014 04:47
a forrás felhasználó

szavazat
18

Hogy nyújtson be az időzónát offset HTTP fejléc AJAX kérések jQuery

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

Azt is, hogy valami hasonló, hogy a tényleges időzónát nevet a moment.tz.guess();következőtől http://momentjs.com/timezone/docs/#/using-timezones/guessing-user-timezone/

Válaszolt 13/09/2012 03:05
a forrás felhasználó

szavazat
18

Én még nem láttam a részletes választ, hogy itt lesz az időzónát. Nem szükséges geokódolása IP-címét vagy a PHP (lol) vagy helytelenül kitalálni egy eltolt.

Először egy időzónát nem csak egy eltolt GMT. Ez egy olyan terület a föld, ahol az idő szabályok által meghatározott helyi előírásoknak. Néhány országban nyári időszámítást, és kapcsolja be a DST a különböző időkben. Ez általában fontos, hogy a tényleges terület, nem csak az aktuális eltolás.

Ha szándékában áll, hogy tárolja ezt időzónát, például a felhasználói beállítások kívánt zóna, és nem csak az eltolás. Valósidejű konverziót, akkor nem számít sokat.

Most, hogy az időzónát a javascript akkor használd ezt:

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

Azonban úgy találtam, hogy könnyebb egyszerűen csak használja ezt robosztus bővítmény, amely visszaállítja a Olsen formázott időzónát:

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

Válaszolt 30/08/2012 06:08
a forrás felhasználó

szavazat
16

Egyszerű, csak használja a JavaScript getTimezoneOffsetfüggvény így néz ki:

-new Date().getTimezoneOffset()/60;
Válaszolt 27/05/2012 18:25
a forrás felhasználó

szavazat
16

A PHP date függvény akkor lesz a dátum idő szerver, melyik oldalon található. Az egyetlen módja, hogy a felhasználó az idő, hogy használja a JavaScript.

De azt javaslom, hogy ha a webhely nem regisztráció szükséges, akkor a legjobb, ha megkéri a felhasználó, miközben regisztrációt kötelező kitölteni. Kilistázhatod különböző időzónák regiszter oldalon, és mentse, hogy az adatbázisban. Ezt követően, ha a felhasználó bejelentkezési oldalon, akkor beállíthatja az alapértelmezett időzónát, hogy a session, mint egy felhasználó a kiválasztott időzóna. Beállíthatjuk a konkrét időzóna PHP függvény date_default_timezone_set. Ez meg a megadott időzóna a felhasználók számára.

Alapvetően a felhasználók időzóna megy kliens oldalon, így kell használni a JavaScript erre.

Az alábbiakban a forgatókönyvet, hogy a felhasználók az időzónát a PHP és a 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();
?>

De, mint egy az én szempontból, hogy jobb, hogy kérje a felhasználóknak, ha a regisztráció kötelező a projekt.

Válaszolt 16/09/2010 06:59
a forrás felhasználó

szavazat
16

Valaki, hogy minden szolgáltatás, amely egyezik az IP a földrajzi elhelyezkedés

Nos, szerencsés az Ön számára, hogy válasz megtalálható a mi nagyon saját StackOverflow honlap: Hogyan juthat az ország szerint egy bizonyos IP?

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

Válaszolt 04/08/2008 12:11
a forrás felhasználó

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

Egyszerűen adja meg szer UNIX időbélyeg formátumban ezt a funkciót, javascript már tudja az időzónát a felhasználó.

mint ez:

php:

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

ez is meg fog jelenni az idők helyesen alapul az időzónát személyt állított a számítógépén óra, nem kell kérni senkinek, és mentse el a helyekre hála istennek!

Válaszolt 28/08/2011 00:00
a forrás felhasználó

szavazat
14

Ne használja az IP-címet biztosan megállapítani, helyét (és Hense időzónát) - azért, mert a NAT-tal, Proxies (egyre népszerűbb), és a VPN-ek, az IP-címek nem feltétlenül tükrözik reálisan a felhasználó aktuális tartózkodási helyét, de a hely, ahol a szerverek azokat megvalósító protokollok laknak.

Hasonló ahhoz, ahogy körzetszámok már nem megkereshető a telefon felhasználói, hiszen a népszerűsége számhordozhatóság.

IP és egyéb technikák fenti alkalmasak arra utal, hogy az alapértelmezett , hogy a felhasználó állíthatja / helyes.

Válaszolt 02/01/2013 19:05
a forrás felhasználó

szavazat
14

A mágikus minden úgy tűnik, hogy

visitortime.getTimezoneOffset()

Ez jó, nem tudom. Működik az IE, stb? Itt meg kell tudni használni JS Ajax, meg a cookie-kat, bármi. Én valószínűleg menni a cookie-útvonal magam.

El kell, hogy a felhasználó módosíthatja, hogy mégis. Igyekeztünk a földrajzi helyhez (via MaxMind), hogy ezt egy ideje, és ez volt a baj ésszerűen gyakran - elég ahhoz, hogy nem éri meg, így csak hagyja, hogy a felhasználó beállíthatja a profiljában, és azt mutatják, egy értesítést, hogy a felhasználók, akik nem állította be az övék még.

Válaszolt 03/08/2008 21:40
a forrás felhasználó

szavazat
11

Egy egyszerű módja annak, hogy ez így:

new Date().getTimezoneOffset();
Válaszolt 01/12/2011 12:08
a forrás felhasználó

szavazat
11

Ha történetesen használja OpenID hitelesítés, egyszerű regisztráció Extension megoldaná a problémát azonosított felhasználók számára (akkor kell átalakítani a tz numerikus).

Egy másik lehetőség az lenne, hogy következtetni időzónát az ágens országa előnyben. Ez egy kissé nyers módszer (nem fog működni az en-US), de teszi a jó közelítés.

Válaszolt 30/08/2008 10:29
a forrás felhasználó

szavazat
10

Itt van egy cikk (forráskód), amely elmagyarázza, hogyan kell meghatározni és használni lokalizált időt egy ASP.NET (VB.NET, C #) alkalmazás:

Épp ideje

Röviden, a leírt megközelítés támaszkodik JavaScript getTimezoneOffsetfüggvény, amely visszaadja az értéket, amely menti a session cookie és használt kód mögött beállítani idő értékek között GMT és helyi idő szerint. A szép dolog az, hogy a felhasználónak nem kell megadnia az időzónát (a kód automatikusan megteszi). Van nagyobb részt (ez az, amiért link a cikk), de amennyiben kód teszi igazán könnyen használható. Gyanítom, hogy tudod alakítani a logika, hogy a PHP és más nyelveken is (ameddig érted ASP.NET).

Válaszolt 25/05/2010 01:11
a forrás felhasználó

szavazat
8

Egyszerű és JSés PHP:

Annak ellenére, hogy a felhasználó szórakozz a belső óra és / vagy időzónát, a legjobb módja találtam eddig, hogy az eltolás marad new Date().getTimezoneOffset();. A non-invazív, nem ad fej fáj, és szükségtelenné támaszkodni harmadik fél számára.

Mondom, van egy táblázat users, amely tartalmaz egy mezőt date_created int(13), tárolására UNIX dátum;

Feltételezve, hogy egy ügyfél creates a new account, adatok bekerülnek post, és azt kell insert/updatea date_created columnaz ügyfél unix timestamp, nem a szerver.

Mivel a Timezoneoffset szükséges idején betét / frissítés, akkor telt, mint egy extra $ _POST elem, amikor a kliens elküldi az űrlapot, így nincs szükség tárolni az üléseken és / vagy a cookie-kat, és nincs szükség további szerver eléri sem.

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;

Mondjuk a szerver megkapja tzoa $_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);

Beszúrása / update date_created=$user_timestamp.

Letöltése során date_created, akkor konvertálni az időbélyeg így:

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

Most, ebben a példában illeszkedik az igényeknek, amikor behelyezi a firsttimestamp ... Mikor jön a további időbélyeg, vagy asztalra, u azt szeretné, hogy behelyezi a TZO értéket a felhasználók tábla a jövőben is, vagy a beállítás, a munkamenet vagy a cookie-t.

PS de mi van ha a felhasználó utazik és kapcsolók időzónák. Bejelentkezik a GMT + 4, gyorsan terjed a GMT-1, majd ismét bejelentkezik. Utolsó bejelentkezés lenne a jövőben.

Azt hiszem ... azt hiszem, túl sokat.

Válaszolt 15/09/2014 02:19
a forrás felhasználó

szavazat
7

Próbáld ki ezt a php kód

<?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'];
?>
Válaszolt 30/07/2012 09:08
a forrás felhasználó

szavazat
7

Itt van, hogyan csináld. Ez fogja meghatározni a PHP alapértelmezett időzónát a felhasználó helyi időzónát. Csak illessze be az alábbi tetején az összes oldalát:

<?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
?>
Válaszolt 28/01/2012 09:21
a forrás felhasználó

szavazat
6

Az egyik lehetőség az, hogy a Datefejléc mező, amely meghatározott RFC 7231 és állítólag tartalmazza az időzónát. Persze, ez nem biztos, hogy ez az érték valóban az ügyfél az időzóna, de ez lehet egy kiindulási pont.

Válaszolt 09/09/2014 00:25
a forrás felhasználó

szavazat
5

Első érvényes TZ Adatbázis időzónát név PHP egy két lépésből áll:

1) A Javascript, hogy az időzóna ellensúlyozza pillanatok alatt getTimezoneOffset. Ez ellensúlyozza pozitív lesz, ha a helyi időzónát mögött UTC és negatív, ha előre. Tehát hozzá kell adni egy ellenkező előjellel az eltolás.

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

Pass ezt ellensúlyozza, hogy a PHP.

2) A PHP alakítják át ezt ellensúlyozza egy érvényes időzónát nevet timezone_name_from_abbr funkciót.

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

Írtam egy blogbejegyzést rajta: http://usefulangle.com/post/31/detect-user-browser-timezone-name-in-php Ez tartalmaz egy demo is.

Válaszolt 10/01/2017 11:56
a forrás felhasználó

szavazat
5

meg tudná csinálni a kliens pillanatra időzónát és küldje el az értéket szerver; minta használat:

> moment.tz.guess()
"America/Asuncion"
Válaszolt 13/09/2016 06:19
a forrás felhasználó

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