2012-08-13 24 views
6

Tôi có một chuỗi dấu thời gian ký tự trong R. Khi tôi thay đổi lớp học thành POSIXct bằng phương pháp trực quan, R gán múi giờ không rõ ràng EST.múi giờ trong R: cách tránh các cụm từ mơ hồ như EST?

Ví dụ:

as.POSIXct("2012-08-06 15:32:00") 
as.POSIXct("2012-08-06 15:32:00", tz = "Australia/Brisbane") 
as.POSIXct("2012-08-06 15:32:00", tz = "") 

tất cả sản xuất đầu ra tương tự trên hai hộp (Mac và Windows) của tôi:

"2012-08-06 15:32:00 EST" 

Vấn đề ở đây là EST có thể là bất kỳ số lượng các múi giờ: Đông chuẩn Thời gian ở Hoa Kỳ hoặc Giờ chuẩn miền Đông Úc hoặc múi giờ khác tại Canada (từ ?timezone):

Hãy coi chừng rằng một số chỉ định này có thể không phải là những gì bạn nghĩ: trong EST cụ thể là múi giờ được sử dụng ở Canada mà không cần tiết kiệm ánh sáng ban ngày và không phải EST5EDT hoặc Giờ chuẩn miền Đông Úc.

Có một phương pháp để đặt múi giờ tránh nhãn EST này. Nó được ám chỉ đến, nhưng không được giải thích đầy đủ trong trợ giúp R ​​?timezone. Thiết x là thời điểm hạ cánh Curiosity trên sao Hỏa theo báo cáo của một Australian news service:

x <- as.POSIXct("2012-08-06 15:32:00", tz = "Etc/GMT-10") 
x 
"2012-08-06 15:32:00 GMT-10" 

Và chúng ta có thể kiểm tra rằng điều này là đúng bằng cách chuyển đổi nó vào một múi giờ Mỹ và kiểm tra với một Californian news report:

y <- format(x, tz = "America/Los_Angeles") 
y 
"2012-08-05 22:32:00" 

Nếu sử dụng Etc/GMT+n hay Etc/GMT-n ký hiệu này, xin hãy cẩn thận của sự báo trước sau từ ?timezone:

Nhiều hệ thống hỗ trợ múi giờ của biểu mẫu GMT + n và GMT-n, là với giá trị bù cố định từ UTC (do đó không có DST). Trái ngược với một số cách sử dụng (nhưng phù hợp với các tên như PST8PDT), số chênh lệch âm là số trước (phía đông) UTC, số dư dương là thời gian (phía tây) UTC.

+0

Chỉ cần thấy điều này [liên quan đến câu hỏi & câu trả lời] (http://stackoverflow.com/a/8011954/1265353) – sfuj

+2

Có một SO 'thực hành tốt nhất' để xử lý thời gian/khu vực có thể giúp với khái niệm bên của sự vật :: http://stackoverflow.com/questions/2532729/daylight-saving-time-and-timezone-best-practices. – Thell

Trả lời

6

Dòng thứ nhất và thứ 3 trong ví dụ đầu tiên của bạn tạo ra cùng một kết quả vì tz="" là mặc định cho as.POSIXct. Dòng thứ hai thú vị hơn vì múi giờ được xác định rõ ràng.

Nhưng lưu ý rằng "EST" chỉ là múi giờ được in theo mặc định. Thuộc tính tzone vẫn không rõ ràng.

R> x <- as.POSIXct("2012-08-06 15:32:00", tz="Australia/Brisbane") 
R> x 
[1] "2012-08-06 15:32:00 EST" 
R> attr(x, "tzone") 
[1] "Australia/Brisbane" 
+0

Cảm ơn Josh. Đó là tất cả những gì tôi muốn đảm bảo. – sfuj

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