Bagaimana tepatnya basis data tzdata digunakan?

10

Sistem operasi yang berbeda tampaknya menangani daylight-saving time (DST) secara berbeda. Saya sangat suka pendekatan Cisco IOS yang sangat sederhana dan memungkinkan seseorang untuk mengubah tanggal dan waktu ketika DST dimulai dan berakhir. Sebagai contoh:

clock summer-time EDT recurring 2 Sun Mar 2:00 1 Sun Nov 2:00 60

..mengatur jam 60 menit lebih awal pada hari Minggu minggu kedua bulan Maret jam 2:00 dan menggeser jam 60 menit kembali pada hari Minggu pertama pada bulan November jam 2:00. Bagaimana Linux menangani DST? Saya tahu bahwa ada tzdatapaket yang berisi file data zona waktu dan file-file itu diinstal ke /usr/share/zoneinfo/direktori. Bagaimana dan dengan utilitas manakah file-file itu digunakan? Saya dapat melihat pergeseran dari UTC (2) dan nama zona waktu (EET dan EEST) dalam file:

T60:~# strings /usr/share/zoneinfo/posix/Europe/Helsinki
TZif2
    HMT
EEST
TZif2
EEST
EET-2EEST,M3.5.0/3,M10.5.0/4
T60:~# 

Selain itu, M3mungkin bulan ketiga dan M10bulan kesepuluh? Selain itu, offset juga harus ditentukan di suatu tempat. Sebagai contoh di iOS seseorang dapat mengkonfigurasi bahwa setelah DST terjadi, jam bergeser misalnya 90 atau 120 menit, bukan 60.

Martin
sumber

Jawaban:

4

Jika Anda melihat halaman Wikipedia tentang basis data TZ :

kutipan

Format file

Database tz diterbitkan sebagai satu set file teks yang berisi daftar aturan dan transisi zona dalam format yang dapat dibaca manusia. Untuk digunakan, file teks ini dikompilasi ke dalam serangkaian file biner yang bebas platform — satu per zona waktu. Kode sumber referensi mencakup kompiler yang disebut zic (kompiler informasi zona), serta kode untuk membaca file-file itu dan menggunakannya dalam API standar seperti localtime () dan mktime ().

Pencarian tambahan muncul T&J ini di stackoverflow, berjudul: Pertanyaan format file database Timezone , yang memiliki informasi tambahan tentang format file.

slm
sumber