Tại sao zone.tab thiếu nhiều múi giờ như vậy?


12

Có hơn một nghìn tệp múi giờ trên hộp * nix điển hình của bạn (in / user / share / zoneinfo). Nhiều người trong số họ chỉ khác nhau trong các ngày lịch sử ít liên quan đến các chương trình chỉ quan tâm đến những ngày gần đây - hoặc thậm chí chỉ về thời gian hiện tại. Nhưng bất kể, có rất nhiều trong số chúng, và hoàn toàn hợp pháp khi chọn bất kỳ trong số chúng làm múi giờ cho hệ thống của bạn cũng như sử dụng bất kỳ trong số chúng cho một chương trình hoặc trình bao cụ thể bằng cách đặt biến môi trường TZ. Tất cả đều hợp lệ.

Và sau đó có tệp zone.tab (/usr/share/zoneinfo/zone.tab). Nó chỉ liệt kê một chút hơn 400 múi giờ (414 trên hệ thống của tôi). Nó thiếu rất nhiều múi giờ. Vì vậy, câu hỏi là tại sao? Tại sao không có tất cả trong đó? Và vì họ không có tất cả trong đó, làm thế nào quyết định cái nào được đưa vào đó?

area.tab không bao gồm mã quốc gia, cũng như kinh độ và vĩ độ cho từng múi giờ mà nó liệt kê (có lẽ là lý do cho sự tồn tại của tệp) và không phải tất cả các múi giờ đều có (ví dụ: UTC không có các múi giờ đó) và nó không nằm trong area.tab), vì vậy, rõ ràng, không phải mọi múi giờ đều có thể được liệt kê trong zone.tab. Nhưng tại sao không phải tất cả những nơi tương ứng với một thành phố hoặc khu vực thực tế (như hầu hết trong số họ làm) được liệt kê trong tệp? Tại sao chỉ có 414 thay vì 1000+ thực sự có sẵn?

Câu trả lời:


6

Một chủ đề có tiêu đề Một lời cầu xin được đổi mới để đưa vào area.tab cung cấp một số giải thích về những gì zone.tabđược sử dụng cho.

Công dụng chính của nó dường như là hiển thị bản đồ các thành phố và địa điểm của họ, để cho phép người dùng chọn múi giờ của họ bằng cách nhấp vào thành phố gần họ.

Với ý nghĩ đó, không cần biết tất cả các bí danh cho mỗi thành phố, biết một cách ưa thích để đề cập đến nó là đủ. (Nhưng có vẻ như nó luôn bao gồm ít nhất một thành phố ở mỗi quốc gia.)

Các bí danh khác cho mỗi vùng được lưu trữ trong mã nguồn tzdata .

Ví dụ: backwardtập tin có

Link    Asia/Kolkata        Asia/Calcutta

để mọi người có thể sử dụng chính tả mới hoặc chính tả cũ.

Tất cả các tệp khác /usr/share/zoneinfođược tạo từ mã nguồn này bằng cách sử dụng zic.

Nhưng không có hơn 600 bí danh, vậy tại sao sự khác biệt lớn?

Có thường là ba phiên bản của mỗi múi giờ tạo: posix, right, và mặc định của hệ thống.

$ cd /usr/share/zoneinfo
$ find right -type f | wc -l
581
$ find posix -type f | wc -l
581
$ find . \( -name posix -o -name right \) -prune -o -type f | wc -l
586

Các tzcode Makefile cho thấy cách những được tạo ra, và đề cập đến lý do cho họ: posixbỏ qua giây nhuận, rightbao gồm họ.

Xem thêm:


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.