Saltar al contenido

Cómo obtener la lista de todas las zonas horarias disponibles usando moment-timezone

Solución:

No existe una forma directa de obtener el formato que desea, directamente desde moment-timezone.

Prueba como a continuación.

var moment = require('moment-timezone');
var timeZones = moment.tz.names();
var offsetTmz=[];

for(var i in timeZones)
{
    offsetTmz.push(" (GMT"+moment.tz(timeZones[i]).format('Z')+") " + timeZones[i]);
}

Ahora, offsetTmz es una matriz de cadenas en el formato que desee.

Así es como lo estoy usando.

Espero que esto te ayudará.

Basado en la respuesta de @Shrabanee y de acuerdo con el comentario de @Tenz, esta es mi solución con los literales de plantilla es6 y con la clasificación de la lista por el número GMT + en lugar del nombre de la zona horaria:

    timeZones = momentTimezone.tz.names();
    let offsetTmz=[];

    for(let i in timeZones)
    {
        offsetTmz.push(`(GMT${moment.tz(timeZones[i]).format('Z')}) ${timeZones[i]}`);
    }

    this.timeZoneNames = offsetTmz.sort();

Basado en la respuesta de Erez Liberman y la respuesta de Matt Johnson sobre recortar la lista, me gustaría agregar la mía como un Typescript clase, que ordena las zonas horarias con desplazamiento negativo en orden inverso

import * as moment from 'moment-timezone';

export class TimezoneData {
    tzName: string;
    tzPresentationName: string;
}

export class TimezoneUtils {

    public static getTimezonesNames(): TimezoneData[] {
        const arr: TimezoneData[] = [];
        const names = moment.tz.names();
        for (const name of names) {
            if ((name.indexOf("https://foroayuda.es/") < 0 && name !== 'UTC') || name.startsWith('Etc/')) {
                continue;
            }
            const data = new TimezoneData();
            data.tzName = name;
            data.tzPresentationName = moment.tz(name).format('Z');
            arr.push(data);
        }
        arr.sort((a, b) => {
            if (a.tzPresentationName === b.tzPresentationName) {
                if (a.tzName === 'UTC') {
                    return -1;
                }
                return a.tzName === b.tzName ? 0 : (a.tzName > b.tzName ? 1 : -1);
            }
            const afc = a.tzPresentationName.charAt(0);
            const bfc = b.tzPresentationName.charAt(0);
            if (afc === '-') {
                if (bfc === '+') {
                    return -1;
                }
                return a.tzPresentationName > b.tzPresentationName ? -1 : 1;
            }
            if (bfc === '-') {
                return 1;
            }
            return a.tzPresentationName > b.tzPresentationName ? 1 : -1;
        });
        arr.forEach(a => a.tzPresentationName = `${a.tzName} (GMT ${a.tzPresentationName})`);
        return arr;
    }
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *