Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

171
Visualizações
¿Cómo obtener el nombre de zona horaria canónica de un alias de zona horaria?

Me gustaría crear una función que convierta los nombres de los alias de la zona horaria en el nombre canónico de dicha zona horaria.

Estado de las zonas horarias de Wikipedia

Por ejemplo, si tuviera Africa/Accra , me gustaría poder buscar que Africa/Abidjan es el nombre canónico de la zona horaria.

 function getCanonicalName(name) { // TODO } getCanonicalName('Africa/Accra'); // => 'Africa/Abidjan'

Cosas que he investigado por mi cuenta

Intenté usar moment-timezone y luxon para analizar el nombre de la zona, pero no parece haber una forma de aplicar ingeniería inversa a la zona horaria canónica como parte de estas bibliotecas.

De acuerdo con los documentos moment-timezone , puede obtener el nombre canónico de una zona horaria de la representación de datos "empaquetados", pero al observar la implementación del pack en su código fuente, parece que solo pasa el source.name .

luxon tiene un ayudante de normalizeZone , pero parece que solo devuelve una instancia de Zone de una amplia gama de tipos de entrada. Sin embargo, no normaliza el nombre de la zona. Hay un indicador isUniversal en luxon Zone s, pero este indicador parece estar relacionado con el horario de verano, no con el estado de la zona horaria.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Es posible que esto no reconozca esa zona específica como un alias desde que se actualizó en septiembre de 2021 :

Pero en general:

 import moment from 'moment'; import momenttz from 'moment-timezone'; // From moment-timezone, but not exported function normalizeName (name) { return (name || '').toLowerCase().replace(/\//g, '_'); } function getCanonicalName(name) { const normalizedName = normalizeName(name); // A canonical zone might exist if (moment.tz._zones[normalizedName]) { return moment.tz._names[normalizedName]; } // If not, there'll be a link to a canonical name const canonicalZoneNormalized = moment.tz._links[normalizeName(name)]; // And return the friendly name return moment.tz._names[canonicalZoneNormalized]; } console.log(getCanonicalName('Pacific/Wallis')); // => Pacific/Tarawa console.log(getCanonicalName('Pacific/Tarawa')); // => Pacific/Tarawa
about 4 years ago · Juan Pablo Isaza Relatório

0

Dado que la base de datos de zona horaria se actualiza solo una vez al año, creo que mi solución requiere poco mantenimiento. Estoy siguiendo un enfoque muy crudo aquí. En realidad, puede obtener la información que se muestra en la página de wikipedia en un JSON primero y luego obtener un mapa que contenga todas las zonas horarias y sus zonas horarias canónicas ejecutando esto en la consola del navegador:

 const keys = []; const timezones = []; $("table:first thead tr th").each(function () { keys.push($(this).text().replace(/\n/g, '')); }); $("table:first tbody tr").each(function () { const obj = {}; let i = 0; $(this).children("td").each(function () { obj[keys[i]] = $(this).text().replace(/\n/g, ''); i++; }); timezones.push(obj); }); const canonicalTimezones = Object.assign({}, ...timezones.map(x => ({ [x['TZ database name']]: (x['Type'] === 'Canonical' ? x['TZ database name'] : x['Notes'].substring(8)) }))); JSON.stringify(canonicalTimezones);

Puede guardar la salida en un archivo en algún lugar. Y luego solo necesita analizarlo en su código y obtener fácilmente la zona horaria canónica respectiva.

 import canonicalTimezones from './canonicalTimezones.json'; function getCanonicalName(name) { return canonicalTimezones[name]; }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda