2012-03-19 11 views
32

Wiem, jak uzyskać przesunięcie strefy czasowej, ale potrzebuję możliwości wykrycia czegoś takiego jak "Ameryka/Nowy Jork". Czy to nawet możliwe z JavaScriptu czy jest to coś, co będę musiał do gości na podstawie offsetu?Jak mogę uzyskać nazwę strefy czasowej w JavaScript?

+2

Oto funkcja, którą napisał Jon Nylander, może to pomaga https://bitbucket.org/pellepim/jstimezonedetect – HerrSerker

+0

Oto pokrewna odpowiedź, która może pomóc: http://stackoverflow.com/a/19421672/1447034 – Douglas

+0

Możliwy duplikat [Wykryj skrót strefy czasowej przy użyciu JavaScript] (http://stackoverflow.com/questions/1954397/detect-timezone-abbreviation-using-javascript) – jberryman

Odpowiedz

1

W języku javascript metoda Date.getTimezoneOffset() zwraca przesunięcie strefy czasowej z UTC w minutach dla bieżących ustawień narodowych.

var x = new Date(); 
var currentTimeZoneOffsetInHours = x.getTimezoneOffset()/60; 

Moment'timezone będzie użytecznym narzędziem. http://momentjs.com/timezone/

Konwersja dniach między stref czasowych

var newYork = moment.tz("2014-06-01 12:00", "America/New_York"); 
var losAngeles = newYork.clone().tz("America/Los_Angeles"); 
var london  = newYork.clone().tz("Europe/London"); 

newYork.format(); // 2014-06-01T12:00:00-04:00 
losAngeles.format(); // 2014-06-01T09:00:00-07:00 
london.format();  // 2014-06-01T17:00:00+01:00 
+1

Nie zrozumiałeś que. – srsajid

+1

Twoje próbki kodu nie są powiązane z pierwotnym pytaniem.Jak korzystać z tej biblioteki, aby zwrócić nazwę bieżącej strefy czasowej użytkownika? –

2

Spróbuj tego kodu zapoznać z here

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"> 
</script> 
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jstimezonedetect/1.0.4/jstz.min.js"> 
</script> 
<script type="text/javascript"> 
    $(document).ready(function(){ 
    var tz = jstz.determine(); // Determines the time zone of the browser client 
    var timezone = tz.name(); //'Asia/Kolhata' for Indian Time. 

    alert(timezone); 

</script> 
25

The Internationalization API wsporniki coraz strefę czasową użytkownika, a jest supported we wszystkich obecnych przeglądarkach.

console.log(Intl.DateTimeFormat().resolvedOptions().timeZone)

Należy pamiętać, że w niektórych starszych wersjach przeglądarek obsługujących API internacjonalizacji własnością timeZone jest ustawiony na undefined zamiast napisu strefy czasowej użytkownika. Najlepiej jak mogę powiedzieć, w chwili pisania (lipiec 2017) all current browsers except for IE11 zwróci strefę czasową użytkownika jako ciąg znaków.

+1

Nigdy nie myślałem, że to jest tak proste, –

+1

niesamowite, pierwszy widziałem, który nie używa chwili! Dzięki – r0bb077

Powiązane problemy