Comment puis-je recueillir le visiteur les informations de fuseau horaire? J'ai besoin de l'GMT offset heures.
Réponses
Trop de publicités?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).
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
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))