¿Cómo imprimir abreviaturas de la zona horaria cuando se usa horas de compensación en el tiempo de Joda?

StackOverflow https://stackoverflow.com/questions/1718484

  •  19-09-2019
  •  | 
  •  

Pregunta

Estoy usando el tiempo de Joda, y me están pasando DateTeMezones que se crean usando DateTimeZone.forOffsetHours(). Me gustaría imprimir estas zonas horarias usando acrónimos de zona horaria estándar como "PST", "EST", etc.

Sin embargo, cada vez que imprimo a veces que usan estas zonas horarias, obtengo una representación "HH: MM" de la zona horaria en lugar del acrónimo del nombre.

Aquí hay un ejemplo:

public class tmp {
    public static void main( String args[] ) {
        // "PST"
        System.out.println( DateTimeFormat.forPattern("z").print( new DateTime() ) );

        // "PST"
        System.out.println( DateTimeFormat.forPattern("z").print( new DateTime( DateTimeZone.forTimeZone( TimeZone.getTimeZone("PST")) )) );

        // "-08:00"
        System.out.println( DateTimeFormat.forPattern("z").print( new DateTime( DateTimeZone.forOffsetHours(-8) )) );
    }
}

¿Hay alguna forma de imprimir el acrónimo de zona horaria apropiada en el último ejemplo usando Joda Time?

¿Fue útil?

Solución

No, no es posible, pero no es un problema del tiempo de Joda, se debe a cómo funcionan las zonas horarias.

El desplazamiento (por ejemplo, UTC-8) no determina la ubicación, por lo que tampoco determina el acrónimo que depende de la ubicación. Como puedes ver aquí, hay UTC-8 en múltiples zonas horarias.

El primer ejemplo funciona porque su zona horaria predeterminada es PST. El segundo funciona porque pides una zona horaria por su nombre (con todas las cosas de guardado del día, etc.). En el tercero obtienes una zona horaria de desplazamiento fijo que no tiene nombre asociado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top