Hosting

Detectar la zona horaria (timezone) del usuario en Javascript


Si se necesita obtener la zona horaria del usuario, con ese trozo trozo de código en Javascript, se puede obtener un array con los nombres de la zona horaria (TimeZone). Con esta función no se puede determinar la zona horaria en exactitud, pero si obtener un listado de los nombres (timezone names) que coinciden con el huso horario de la fecha actual del usuario.

Dependencias

Librería moments.js + moment-timezone-with-data-2010-2020.js

Función tzdetect()

var tzdetect = {
  names: moment.tz.names(),
  matches: function(base){
    var results = [], now = Date.now(), makekey = function(id){
      return [0, 4, 8, -5*12, 4-5*12, 8-5*12, 4-2*12, 8-2*12].map(function(months){
        var m = moment(now + months*30*24*60*60*1000);
        if (id) m.tz(id);
        // Compare using day of month, hour and minute (some timezones differ by 30 minutes)
        return m.format("DDHHmm");
      }).join(' ');
    }, lockey = makekey(base);
    tzdetect.names.forEach(function(id){
      if (makekey(id)===lockey) results.push(id);
    });
    return results;
  }
};

Usar la función tzdetect()

Para obtener el listado de las zonas horarias solo debemos llamar la función tzdetect()
var namesTimeZones = tzdetect.matches();

Con la fecha establecida en Madrid se obtiene un array con 37 nombres de zona horaria que comparten el mismo Huso horario es decir el mismo desplazamiento UTC.

0: "Africa/Ceuta"
1: "Arctic/Longyearbyen"
2: "Atlantic/Jan_Mayen"
3: "CET"
4: "Europe/Amsterdam"
5: "Europe/Andorra"
6: "Europe/Belgrade"
7: "Europe/Berlin"
8: "Europe/Bratislava"
9: "Europe/Brussels"
10: "Europe/Budapest"
11: "Europe/Busingen"
12: "Europe/Copenhagen"
13: "Europe/Gibraltar"
14: "Europe/Ljubljana"
15: "Europe/Luxembourg"
16: "Europe/Madrid"
17: "Europe/Malta"
18: "Europe/Monaco"
19: "Europe/Oslo"
20: "Europe/Paris"
...
SHARE
    Blogger Comment
    Facebook Comment

0 comentarios:

Publicar un comentario