2012-04-24 24 views
8

, die eine Funktion schreiben kann Kunden Zeitzone, Rückgabewert wie zu bekommen: EDTESTIST und so weiterWie bekomme ich die Zeitzone in JavaScript?

+0

http: // Stackoverflow .com/questions/6939685/get-client-time-zone-from-browser Kann ein Duplikat sein? –

+0

Sie wollen solche Abkürzungen wirklich nicht. Wenn Sie CST bekommen, ist es China Standard Time (UTC + 8) oder Cuba Standard Time (UTC - 5)? –

Antwort

11

toTimeString() Methode gibt Zeit mit der Zeitzone Namen versuchen, unter ...

var d=new Date(); 
var n=d.toTimeString();  

ouput 

03:41:07 GMT+0800 (PHT) or 09:43:01 EDT 

Demo

oder

prüfen : Automatic Timezone Detection Using JavaScript

herunterladen jstz.min.js und eine Funktion, um Ihre HTML-Seite

<script language="javascript"> 
     function getTimezoneName() { 
      timezone = jstz.determine_timezone() 
      return timezone.name(); 
     } 
    </script> 
2

Mit dem Date(). GetTimezoneOffset() Funktion hinzufügen und dann eine Hash-Tabelle von dieser URL bauen timeanddate sie beziehen sich auf wenn Sie den Zeitzonenwert verwenden möchten.

1

Wenn Sie sich das Ergebnis des Aufrufs der Methode toString eines Date-Objekts ansehen, erhalten Sie einen Wert, der etwas wie "Di 24 Apr 2012 23:30:54 GMT + 1000 (AUS Eastern Standard Time)" ist. Dies hängt davon ab, auf welches Gebietsschema Ihr System eingestellt ist.

Von dort können Sie jeden Großbuchstaben innerhalb der Klammern übereinstimmen.

var paren = new Date().toString().match(/\(.+\)/); 
return paren ? paren[0].match(/([A-Z])/g).join("") : ""; 

Der Catch ist, dass nicht jeder Browser die eingeklammerten Werte enthält.

Wenn Sie Firefox mit einer bekannten Java-Plugin Targeting sind, können Sie auch nutzen, um das java Objekt in Javascript eine neue Time-Zone (java.util.TimeZone) Objekt auf einen Namen (zB auf Basis zu schaffen. „Amerika/Los_Angeles“), dann rufen Sie die getDisplayName Methode auf, um Ihnen den Namen zu geben.

+0

Leider bekomme ich "Thu Sep 11 2014 11:29:07 GMT + 1000 (EST)" wenn ich new Date() verwende. ToString(); in Australien in Chrome. Dies ist aufgrund der US-amerikanischen EST-Zeitzone GMT-0400 verwirrend. –

0

Verwenden jstz die Zeitzone-Namen zu erhalten:

jstz.determine().name(); 

Es gibt Zeitzone Namen (wie 'America/New York'), die Sie dann mit moment.js usw.

Ein Offset (zB von einem js Date Objekt) verwenden ist nicht genug, weil es die zusätzlichen DST Informationen nicht trägt (Sie werden nicht wissen, ob die Zeit für Daylight Savings und wann angepasst werden muss).

0
  • erhalten Client-Zeitzone in Javascript
  • Ausgabe von -12: +12
  • Sie die Ausgabe durch eine Änderung auf dieser Linie -Math.round(a/60)+':'+-(a%60); Wie -Math.round(a/60); ändern können Sie erhalten // + 2

    var a = new Date().getTimezoneOffset(); 
    var res = -Math.round(a/60)+':'+-(a%60); 
    res = res < 0 ?res : '+'+res; 
    console.log(res); 
    

reference

-1

Dies ist die perfekte Antwort Vollzeitzone von landes-

var a = new Date($.now());  
var regExp = /\(([^)]+)\)/;`enter code here` 
var matches = regExp.exec(a); 
alert(matches[1]); 

diese Warnung bekommen Sie eine Ausgabe wie indische Standardzeit, amerikanische Standardzeit, afrikanische Standardzeit geben:

//$("#timezone option:contains(" + matches[1] + ")").attr('selected', 'selected'); 
+1

Es tut mir leid, aber Link in Ihrer Antwort sieht aus wie ein Spam –

Verwandte Themen