GNU/Linux >> Tutoriales Linux >  >> Linux

¿El JRE admite la descripción posix TZ en lugar del nombre TZ?

No es un error. Es una característica.

Según el javadoc para ZoneId , esa sintaxis POSIX para especificar zonas no es compatible:

ID de zona horaria

El ID es único dentro del sistema. Hay tres tipos de identificación.

El tipo de identificación más simple es el de ZoneOffset. Esto consiste en 'Z' e ID que comienzan con '+' o '-'.

El siguiente tipo de identificación son las identificaciones de estilo desplazado con algún tipo de prefijo, como 'GMT+2' o 'UTC+01:00'. Los prefijos reconocidos son 'UTC', 'GMT' y 'UT'. El desplazamiento es el sufijo y se normalizará durante la creación. Estos ID se pueden normalizar a ZoneOffset usando normalized().

El tercer tipo de identificación son las identificaciones basadas en regiones. Un ID basado en región debe tener dos o más caracteres y no debe comenzar con 'UTC', 'GMT', 'UT' '+' o '-'. Los ID basados ​​en regiones se definen mediante la configuración, consulte ZoneRulesProvider. La configuración se centra en proporcionar la búsqueda desde el ID hasta las ZoneRules subyacentes.

Las reglas de zona horaria las definen los gobiernos y cambian con frecuencia. Hay una serie de organizaciones, conocidas aquí como grupos, que supervisan los cambios de zona horaria y los cotejan. El grupo predeterminado es la base de datos de zonas horarias de IANA (TZDB). Otras organizaciones incluyen IATA (el organismo de la industria de las aerolíneas) y Microsoft.

Cada grupo define su propio formato para el ID de región que proporciona. El grupo TZDB define ID como 'Europa/Londres' o 'América/Nueva_York'. Las ID de TZDB tienen prioridad sobre otros grupos.

Véase también:

  • ¿Zar Var a la zona horaria de Java?

Si escribió algún código para analizar esa sintaxis, debería poder usar los datos para construir un SimpleTimeZone (javadoc). Desafortunadamente, esto obliga a seguir usando el Date antiguo ("en su mayoría obsoleto") clase y amigos.

El nuevo (en Java 8) java.time.* las clases no parecen tener una manera fácil de construir su propio ZoneId de un conjunto de reglas. (Tal vez podría hacerse implementando su propio ZoneRuleProvider (javadoc), pero parece complicado.)

Entonces (en mi opinión), sería mejor que su sistema operativo use las identificaciones de zona TZDB estándar.

Has comentado:

En este sistema en particular, no existen ni "/etc/localtime" ni "/etc/timezone".

Si está ejecutando Ubuntu Bionic, debería existir "/etc/localtime". Debe ser un enlace simbólico a un archivo binario de zona horaria en el árbol "/usr/share/zoneinfo". Consulte https://linuxize.com/post/how-to-set-or-change-timezone-on-ubuntu-18-04/. O quizás el problema es que el sistema ha sido configurado deliberadamente para no conocer su zona horaria local.


Linux
  1. Conéctese a Linux por nombre en lugar de IP

  2. ¿Por qué Linux usa una partición de intercambio en lugar de un archivo?

  3. ¿Cuántos usuarios admite Linux que inicien sesión al mismo tiempo a través de SSH?

  4. ¿Cómo funciona el comando ps?

  5. ¿Qué significa la capacidad ep?

¿Cómo funciona la punta adhesiva?

¿Tail lee todo el archivo?

¿Cómo funciona el comando Tee??

¿El cambio de The Swappiness necesita un reinicio?

¿Por qué la compatibilidad con Kubuntu y Xubuntu 16.04 Lts finaliza antes de la fecha oficial de finalización de Ubuntu?

¿Por qué mi nombre de host aparece con la dirección 127.0.1.1 en lugar de 127.0.0.1 en /etc/hosts?