GNU/Linux >> Znalost Linux >  >> Linux

Podporuje JRE spíše popis TZ než název TZ?

Není to chyba. Je to funkce.

Podle javadoc pro ZoneId , že syntaxe POSIX pro specifikaci zón není podporována:

ID časových pásem

ID je v rámci systému jedinečné. Existují tři typy ID.

Nejjednodušší typ ID je od ZoneOffset. Skládá se z 'Z' a ID začínajících '+' nebo '-'.

Dalším typem ID jsou ID ve stylu offsetu s nějakou formou předpony, jako je „GMT+2“ nebo „UTC+01:00“. Rozpoznané předpony jsou 'UTC', 'GMT' a 'UT'. Offset je přípona a bude během vytváření normalizována. Tato ID lze normalizovat na ZoneOffset pomocí normalized().

Třetím typem ID jsou ID založená na regionu. ID založené na regionu musí mít dva nebo více znaků a nesmí začínat „UTC“, „GMT“, „UT“, „+“ nebo „-“. ID založená na regionu jsou definována konfigurací, vizZoneRulesProvider. Konfigurace se zaměřuje na poskytování vyhledávání z ID na základní ZoneRules.

Pravidla časových pásem jsou definována vládami a často se mění. Existuje řada organizací, zde známých jako skupiny, které sledují změny časových pásem a porovnávají je. Výchozí skupinou je databáze časových pásem IANA (TZDB). Mezi další organizace patří IATA (organizace leteckého průmyslu) a Microsoft.

Každá skupina definuje svůj vlastní formát pro ID regionu, které poskytuje. Skupina TZDB definuje ID jako 'Evropa/Londýn' nebo 'Amerika/New_York'. TZDB ID mají přednost před ostatními skupinami.

Viz také:

  • TZ Var do časového pásma Java?

Pokud jste napsali nějaký kód pro analýzu této syntaxe, měli byste být schopni použít data k vytvoření SimpleTimeZone (javadoc). Bohužel to nutí pokračovat v používání starého („většinou zastaralého“) Date třída a kamarádi.

Nový (v Javě 8) java.time.* Zdá se, že třídy nemají snadný způsob, jak vytvořit svůj vlastní ZoneId ze sady pravidel. (Možná by to šlo udělat implementací vlastního ZoneRuleProvider (javadoc), ale vypadá to složitě.)

Takže (IMO) by bylo lepší, kdyby váš OS používal standardní ID zón TZDB.

Komentovali jste:

V tomto konkrétním systému neexistuje ani "/etc/localtime" ani "/etc/timezone".

Pokud používáte Ubuntu Bionic, měl by existovat „/etc/localtime“. Měl by to být symbolický odkaz na binární soubor časového pásma ve stromu "/usr/share/zoneinfo". Viz https://linuxize.com/post/how-to-set-or-change-timezone-on-ubuntu-18-04/. Nebo je možná problém v tom, že systém byl záměrně nakonfigurován tak, aby neznal své místní časové pásmo.


Linux
  1. Co znamená POSIX?

  2. Co znamená tečka před názvem proměnné ve struct?

  3. Při volání z terminálu použijte místo instalace Anaconda výchozí Python

  1. Jak funguje Tee Command?

  2. Kolik uživatelů Linux podporuje přihlášení současně přes SSH?

  3. Jak funguje příkaz ps?

  1. co dělá funkce slabý_alias a kde je definována

  2. Co dělá povolení k provedení?

  3. Připojte se k Linuxu podle jména, nikoli podle IP