GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Unterstützt die JRE die Posix-TZ-Beschreibung anstelle des TZ-Namens?

Es ist kein Fehler. Es ist eine Funktion.

Laut Javadoc für ZoneId , dass die POSIX-Syntax zur Angabe von Zonen nicht unterstützt wird:

Zeitzonen-IDs

Die ID ist innerhalb des Systems eindeutig. Es gibt drei Arten von IDs.

Der einfachste ID-Typ ist der von ZoneOffset. Diese besteht aus 'Z' und IDs, die mit '+' oder '-' beginnen.

Der nächste ID-Typ sind IDs im Offset-Stil mit einer Art Präfix, z. B. „GMT+2“ oder „UTC+01:00“. Die erkannten Präfixe sind „UTC“, „GMT“ und „UT“. Der Offset ist das Suffix und wird während der Erstellung normalisiert. Diese IDs können mit normalized() auf einen ZoneOffset normalisiert werden.

Der dritte ID-Typ sind regionsbasierte IDs. Eine regionsbasierte ID muss aus zwei oder mehr Zeichen bestehen und darf nicht mit „UTC“, „GMT“, „UT“, „+“ oder „-“ beginnen. Regionsbasierte IDs werden durch Konfiguration definiert, siehe ZoneRulesProvider. Die Konfiguration konzentriert sich auf die Bereitstellung der Suche von der ID zu den zugrunde liegenden Zonenregeln.

Zeitzonenregeln werden von Regierungen festgelegt und ändern sich häufig. Es gibt eine Reihe von Organisationen, die hier als Gruppen bezeichnet werden, die Zeitzonenänderungen überwachen und zusammenstellen. Die Standardgruppe ist die IANA Time Zone Database (TZDB). Weitere Organisationen sind IATA (der Verband der Luftfahrtindustrie) und Microsoft.

Jede Gruppe definiert ihr eigenes Format für die bereitgestellte Regions-ID. Die TZDB-Gruppe definiert IDs wie „Europe/London“ oder „America/New_York“. TZDB-IDs haben Vorrang vor anderen Gruppen.

Siehe auch:

  • TZ-Var in Java-Zeitzone?

Wenn Sie Code geschrieben haben, um diese Syntax zu parsen, sollten Sie in der Lage sein, die Daten zum Erstellen eines SimpleTimeZone zu verwenden (Javadoc). Leider zwingt dies dazu, weiterhin den alten ("größtenteils veralteten") Date zu verwenden Klasse und Freunde.

Das neue (in Java 8) java.time.* Klassen scheinen keine einfache Möglichkeit zu haben, Ihren eigenen ZoneId zu konstruieren aus einem Regelwerk. (Vielleicht könnte dies durch die Implementierung Ihres eigenen ZoneRuleProvider erreicht werden (javadoc), sieht aber kompliziert aus.)

Also (IMO) wäre es besser, Ihr Betriebssystem dazu zu bringen, die Standard-TZDB-Zonen-IDs zu verwenden.

Sie haben kommentiert:

Auf diesem speziellen System existieren weder "/etc/localtime" noch "/etc/timezone".

Wenn Sie Ubuntu Bionic ausführen, sollte "/etc/localtime" vorhanden sein. Es sollte ein symbolischer Link zu einer binären Zeitzonendatei im „/usr/share/zoneinfo“-Baum sein. Siehe https://linuxize.com/post/how-to-set-or-change-timezone-on-ubuntu-18-04/. Oder vielleicht liegt das Problem darin, dass das System absichtlich so konfiguriert wurde, dass es seine lokale Zeitzone nicht kennt.


Linux
  1. Der Status der Hidpi-Unterstützung in Xfce?

  2. Was bedeutet POSIX?

  3. Was bedeutet ein Punkt vor dem Variablennamen in struct?

  4. Verwenden Sie die Standard-Python-Installation anstelle der Anaconda-Installation, wenn Sie vom Terminal aus aufgerufen werden

  5. Was macht die Weak_alias-Funktion und wo ist sie definiert?

Wie funktioniert der Tee-Befehl?

Benötigt das Ändern der Swapiness einen Neustart?

Warum endet der Support für Kubuntu und Xubuntu 16.04 Lts früher als das offizielle EOL-Datum von Ubuntu?

Was bewirkt die Ausführungserlaubnis?

Warum verwendet Linux eine Swap-Partition und keine Datei?

Warum erscheint mein Hostname mit der Adresse 127.0.1.1 statt 127.0.0.1 in /etc/hosts?