2010-10-28 37 views

Trả lời

19

?Sys.timezone có một số gợi ý, đặc biệt để xem xét: "R_HOME/share/zoneinfo/zone.tab" (R_HOME là thư mục R được cài đặt trong). Hãy nhớ rằng các múi giờ khó chịu và nhiều sắc thái của chúng là hệ điều hành (và ngôn ngữ?) Cụ thể.

Trong trường hợp cụ thể của bạn, bạn muốn "CST6CDT" thay vì "CST".

+0

Cảm ơn, vì vậy tôi nên sử dụng EST5EDT hơn EST? điều này không rõ ràng ... – ahala

+2

Có hoặc bạn có thể sử dụng "America/New_York" như được định nghĩa trong tệp "zones.tab". Như tôi đã nói, khó chịu ... –

5

Không thể tìm thấy nó ở vị trí đó trên thực hiện của tôi, nhưng tìm thấy một phiên bản nén trong một thư mục nguồn. Dưới đây là một danh sách các từ viết tắt múi giờ xuất hiện ở cấp cao nhất của zones.tab file:

CET, CST6CDT, Cuba, EET, EST, EST5EDT, Egypt, Eire, Factory, GB, GB-Eire, GMT, 
GMT+0, GMT-0, GMT0, Greenwich, HST, Hongkong, Iceland, Iran, Israel, Jamaica, Japan, 
Kwajalein, Libya, MET, MST, MST7MDT, NZ, NZ-CHAT, Navajo, PRC, PST8PDT, Poland, Portugal, 
ROC, ROK, Singapore, Turkey, UCT, UTC, Universal, W-SU, WET, Zulu 

Ngoài ra còn có các thư mục với tên lục địa/quốc gia, trong đó có nhiều lựa chọn như America/New_York ví dụ trên .:

Africa/  Asia/  Canada/  Indian/ 
America/ Atlantic/ Chile/  Mexico/ 
Antarctica/ Australia/ Etc/  Pacific/ 
Arctic/  Brazil/  Europe/  US/ 

Điều này được tìm thấy trong tệp /R-2.11.1/src/extra/tzone/zoneinfo.zip.

13

Công cụ múi giờ có thể hướng bạn NUTS !!

Được đặt tại Đức, đây là những gì tôi sử dụng để làm thiết tz tôi:

> options(tz="Europe/Berlin") 

Làm như vậy, tôi luôn tự hỏi tại sao R sẽ ném "múi giờ không rõ" cảnh báo:

> t <- "2011-11-08 09:42:00" 
> as.POSIXct(t, tz=getOption("tz")) 
[1] "2011-11-08 09:42:00 CET" 
Warning messages: 
1: In strptime(xx, f <- "%Y-%m-%d %H:%M:%OS", tz = tz) : 
    unknown timezone 'MET-1MST' 
2: In as.POSIXct.POSIXlt(x) : unknown timezone 'MET-1MST' 
3: In strptime(x, f, tz = tz) : unknown timezone 'MET-1MST' 
4: In as.POSIXct.POSIXlt(as.POSIXlt(x, tz, ...), tz, ...) : 
    unknown timezone 'MET-1MST' 
5: In as.POSIXlt.POSIXct(x, tz) : unknown timezone 'MET-1MST' 

Một ngày nào đó tôi phát hiện ra rằng thiết lập tz qua options() là không đủ vì biến môi trường TZ không bị ảnh hưởng và do đó tất cả các sự cố:

> Sys.getenv("TZ") 
[1] "MET-1MST" 

Thay đổi này nên làm đi với những lời cảnh báo khó chịu:

> Sys.setenv(TZ="Europe/Berlin") 
> Sys.getenv("TZ") 
[1] "Europe/Berlin" 
> as.POSIXct(t, tz=getOption("tz")) 
[1] "2011-11-08 09:42:00 CET" 
7

Hầu hết các nền tảng R sử dụng cơ sở dữ liệu múi giờ biên soạn bởi David Olson, nơi mà các tài liệu tham khảo ưa thích là theo vị trí. Có tên hơi lỗi thời nhưng chúng sẽ giúp bạn đi.

Tìm một danh sách đầy đủ các múi giờ có sẵn (không hoạt động trên cửa sổ):

OlsonNames() 

Đối với folks chạy cửa sổ OlsonNames() không hoạt động: See the full list here.

Hoặc đọc lên một cách chi tiết hơn ở đây http://www.twinsun.com/tz/tz-link.htm

+0

Hoạt động tốt trên Windows của tôi, cả Windows Server 2012 và Windows 10. –

+0

Hmm thú vị ... hoạt động trên các máy chủ Linux của chúng tôi nhưng không hoạt động trên máy tính để bàn của tôi. – mmann1123

Các vấn đề liên quan