2012-03-01 25 views
6

Tôi có một kịch bản shell (zsh, để được chính xác) trong đó sử dụng'Mỹ/Đông' và 'Hoa Kỳ/Trung ương' và 'Hoa Kỳ/Thái Bình Dương' không được chấp nhận cho các chuyến đi chơi hay chỉ là PHP?

strftime "%I:%M %p %Z (%a, %b %d)" "$EPOCHSECONDS"

để tạo ra một "thời điểm hiện tại" như

"14:45 CST (Thu, Mar 01) "

này cần để có thể hiển thị thời gian ở các múi giờ Mỹ khác nhau, và vì vậy tôi đã được sử dụng 'Mỹ/Đông', 'Mỹ/Trung tâm', và 'Mỹ/Thái Bình Dương' như vậy:

export TZ='US/Eastern' 
strftime "%I:%M %p %Z (%a, %b %d)" "$EPOCHSECONDS" 

Điều đó dường như chỉ hoạt động tốt và tôi thích sử dụng TZ = 'America/CityName' vì nó không yêu cầu tôi biết thành phố nào thuộc TZ, tôi chỉ cần nói cho tôi biết TZ nào mà tôi muốn.

Tuy nhiên, tôi đã xảy ra trên khắp http://www.php.net/manual/en/timezones.others.php và thấy rằng nó nói

Xin đừng sử dụng bất kỳ múi giờ được liệt kê ở đây (ngoài UTC), họ chỉ tồn tại vì những lý do tương thích ngược.

Tôi không biết vấn đề là gì với tên Hoa Kỳ/Vùng, nhưng tôi tò mò muốn biết liệu việc sử dụng chúng có thể gây ra sự cố trong tương lai gần hay không. ? Nó chỉ là PHP mà không thích chúng, hoặc là tất cả mọi người di chuyển ra khỏi chúng?

Trả lời

7

Định dạng chuẩn để đặt tên múi giờ trong cơ sở dữ liệu Olson là Lục địa/Thành phố. Tên "cũ" mà bạn đề cập đến như US/Eastern, US/Central và nhiều tên khác, được liệt kê dưới dạng liên kết tương thích ngược trong phân phối nguồn tzdata (trong tệp "ngược"). Theo nhận xét ở đầu tệp, những tên này có thể đã trở thành các liên kết tương thích ngược vào cuối năm 1993.

Tôi nghĩ rằng tôi nhớ rằng tiêu chuẩn này đã được áp dụng vì nó cảm thấy ổn định hơn: địa chính trị (quốc gia) thay đổi ranh giới, thành phố không bao giờ di chuyển xung quanh. Cũng có thể vì những cái tên như "Miền Đông" và "Miền Trung" được cho là khó hiểu hơn bởi vì chúng có nghĩa là các múi giờ khác nhau ở những nơi khác nhau trên thế giới. Tuy nhiên, tôi không thể tìm thấy bất kỳ tham chiếu nào đến lý do đặt tên vào lúc này, do đó, không báo cho tôi về điều này.

Tên kiểu lục địa/thành phố được ưu tiên. Lưu ý rằng các hệ điều hành như Debian và Ubuntu yêu cầu bạn chọn múi giờ hệ thống bằng cách sử dụng các tên này (trừ khi chúng tự động phát hiện thời gian cài đặt), Sử dụng những tên này bạn sẽ không thực sự cần, như bạn nói, mà TZ "vì tên thành phố là, tốt, một phần của tên múi giờ! Vì vậy, nếu bạn tình cờ đã học được tên Lục địa/Thành phố thay vì hoặc thêm vào tên Quốc gia/Vùng, bạn đã OK.

Điều đó đang được nói, tôi không nghĩ rằng những tên này sẽ biến mất. Trên danh sách gửi thư múi giờ, chúng chắc chắn luôn được gọi là "tương thích ngược", không bị "phản đối" và được dự định ở lại, bất kể những gì PHP đề xuất.