1024 votes

Obtenir le fuseau horaire du client en JavaScript

Comment puis-je recueillir le visiteur les informations de fuseau horaire? J'ai besoin de l'GMT offset heures.

769voto

NickFitz Points 14977
var offset = new Date().getTimezoneOffset();

Le décalage de fuseau horaire est la différence, en minutes, entre l'heure UTC et l'heure locale. Notez que cela signifie que le décalage est positif si le fuseau horaire local est derrière l'UTC et négative si elle est en avance. Par exemple, si votre fuseau horaire est UTC+10 (Australian Eastern Standard Time), -600 sera retourné. L'heure avancée empêche cette valeur étant une constante, même pour un endroit donné

Notez que tous les fuseaux horaires sont compensées par des heures entières: par exemple, à terre-Neuve est UTC moins 3h 30m (en laissant de l'Heure d'été de l'équation).

160voto

Marquez Points 1980

Je me rends compte que cette réponse est un peu hors sujet, mais j'imagine que beaucoup d'entre nous à la recherche d'une réponse aussi voulu formater le fuseau horaire pour l'affichage et peut-être obtenir la zone abréviation trop. Donc, ici, il va...

Si vous souhaitez que le fuseau horaire du client joliment mis en page, vous pouvez compter sur le JavaScript Date.méthode toString et à faire:

var split = new Date().toString().split(" ");
var timeZoneFormatted = split[split.length - 2] + " " + split[split.length - 1];

Cela vous donnera "GMT-0400 (heure de l'est)", par exemple, y compris le fuseau horaire de minutes, le cas échéant.

Sinon, avec les regex vous pouvez extraire la partie souhaitée:

Pour "GMT-0400 (HAE)" :

new Date().toString().match(/([A-Z]+[\+-][0-9]+.*)/)[1]

Pour "GMT-0400" :

new Date().toString().match(/([A-Z]+[\+-][0-9]+)/)[1]

Pour juste "HAE" :

new Date().toString().match(/\(([A-Za-z\s].*)\)/)[1]

Pour juste "-0400":

new Date().toString().match(/([-\+][0-9]+)\s/)[1]

Date.toString de référence: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/toString

84voto

cryo Points 4773

Il a déjà été répondu à comment obtenir décalage en minutes comme un entier, mais dans le cas où quelqu'un veut le local décalage GMT comme une chaîne de caractères par exemple, "+1130":

function pad(number, length){
    var str = "" + number
    while (str.length < length) {
        str = '0'+str
    }
    return str
}

var offset = new Date().getTimezoneOffset()
offset = ((offset<0? '+':'-')+ // Note the reversed sign!
          pad(parseInt(Math.abs(offset/60)), 2)+
          pad(Math.abs(offset%60), 2))

43voto

16voto

dfa Points 54490

essayez getTimezoneOffset() de la Date objet:

var curdate = new Date()
var offset = curdate.getTimezoneOffset()

Cette méthode retourne le décalage de fuseau horaire dans les minutes qui est la différence entre le GMT et heure locale dans quelques minutes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X