GNU/Linux >> Belajar Linux >  >> Linux

Apakah JRE mendukung deskripsi posix TZ daripada nama TZ?

Itu bukan bug. Ini adalah fitur.

Menurut javadoc untuk ZoneId , bahwa sintaks POSIX untuk menentukan zona tidak didukung:

ID zona waktu

ID unik di dalam sistem. Ada tiga jenis ID.

Jenis ID yang paling sederhana adalah dari ZoneOffset. Ini terdiri dari 'Z'dan ID yang dimulai dengan '+' atau '-'.

Jenis ID berikutnya adalah ID gaya offset dengan beberapa bentuk awalan, seperti 'GMT+2' atau 'UTC+01:00'. Prefiks yang dikenali adalah 'UTC', 'GMT' dan 'UT'. Offset adalah akhiran dan akan dinormalisasi selama pembuatan. ID ini dapat dinormalisasi menjadi ZoneOffset menggunakan normalized().

Jenis ID ketiga adalah ID berbasis wilayah. ID berbasis kawasan harus terdiri dari dua karakter atau lebih, dan tidak dimulai dengan 'UTC', 'GMT', 'UT' '+'atau '-'. ID berbasis kawasan ditentukan oleh konfigurasi, lihat ZoneRulesProvider. Konfigurasi berfokus pada penyediaan pencarian dari ID ke ZoneRules yang mendasarinya.

Aturan zona waktu ditentukan oleh pemerintah dan sering berubah. Ada sejumlah organisasi, yang dikenal di sini sebagai grup, yang memantau perubahan zona waktu dan menyusunnya. Grup default adalah Basis Data Zona Waktu IANA (TZDB). Organisasi lain termasuk IATA (badan industri penerbangan) dan Microsoft.

Setiap grup menentukan formatnya sendiri untuk ID wilayah yang disediakannya. Grup TZDB menentukan ID seperti 'Eropa/London' atau 'Amerika/New_York'. ID TZDB lebih diutamakan daripada grup lain.

Lihat juga:

  • TZ Var ke Java TimeZone?

Jika Anda menulis beberapa kode untuk menguraikan sintaks tersebut, Anda seharusnya dapat menggunakan data tersebut untuk membuat SimpleTimeZone (javadoc). Sayangnya, ini memaksa untuk terus menggunakan Date yang lama ("sebagian besar sudah usang") kelas dan teman.

java.time.* baru (dalam Java 8). kelas tampaknya tidak memiliki cara mudah untuk membuat ZoneId Anda sendiri dari seperangkat aturan. (Mungkin bisa dilakukan dengan mengimplementasikan ZoneRuleProvider Anda sendiri (javadoc), tetapi terlihat rumit.)

Jadi (IMO) Anda akan lebih baik membuat OS Anda menggunakan id zona TZDB standar.

Anda berkomentar:

Pada sistem khusus ini, baik "/etc/localtime" maupun "/etc/timezone" tidak ada.

Jika Anda menjalankan Ubuntu Bionic, "/etc/localtime" harus ada. Itu harus berupa symlink ke file zona waktu biner di pohon "/usr/share/zoneinfo". Lihat https://linuxize.com/post/how-to-set-or-change-timezone-on-ubuntu-18-04/. Atau mungkin masalahnya adalah sistem sengaja dikonfigurasi untuk tidak mengetahui zona waktu lokalnya.


Linux
  1. Bagaimana Cara Kerja Sticky Bit?

  2. Status Dukungan Hidpi Di Xfce?

  3. Apakah Mengubah Swappiness Perlu Reboot?

  1. Apa yang dimaksud dengan POSIX?

  2. Apa arti titik sebelum nama variabel dalam struct?

  3. apa yang dilakukan fungsi weak_alias dan di mana itu didefinisikan

  1. Hubungkan ke Linux dengan nama daripada IP

  2. Berapa banyak pengguna yang didukung Linux untuk masuk pada saat yang sama melalui SSH?

  3. Bagaimana cara kerja antarmuka loopback