2012-08-27 29 views
5

Tôi đang chạy R 2.15.1 trên máy Mac có OS X Mountain Lion. Tôi đang cố gắng sử dụng gói lubridate (v 1.1.0) để tạo ra một chuỗi thời gian trong múi giờ phía Đông Hoa Kỳ cho năm 2011 với khoảng thời gian 15 phút. Sau đây có vẻ như nó sẽ làm việc:Giờ tiết kiệm ánh sáng ban ngày ở lubridate

d0 <- mdy_hms("1/1/2011 5:00:00", tz="UTC") 
dspan <- d0 + c(0:35039) * minutes(15) 
espan <- with_tz(dspan,tz="America/New_york") 

Bây giờ, vào năm 2011 giờ mùa hè bắt đầu vào lúc 2:00 vào ngày 13. 16 giá trị đầu tiên của espan vào ngày đó là:

espan[(month(espan)==3)&(day(espan)==13)][1:16] 

[1] "00:00:00 EST" "00:15:00 EST" "00:30:00 EST" "00:45:00 EST" 
[5] "01:00:00 EST" "01:15:00 EST" "01:30:00 EST" "01:45:00 EST" 
[9] "03:00:00 EDT" "03:15:00 EDT" "03:30:00 EDT" "03:45:00 EDT" 
[13] "04:00:00 EDT" "04:15:00 EDT" "04:30:00 EDT" "04:45:00 EDT" 

Trong ở trên đầu ra, tôi đã loại bỏ các ngày để có được nó để phù hợp ở đây. Nhưng nó cho tôi những gì tôi mong đợi. Thời gian một giờ sau 1 giờ sáng theo giờ EST là 3 giờ sáng theo giờ EDT. Tuy nhiên, thời gian tiết kiệm ánh sáng ban ngày kết thúc vào ngày 6 tháng 11 và đây là 16 giá trị đầu tiên của espan vào ngày đó:

espan[(month(espan)==11)&(day(espan)==6)][1:16] 

[1] "00:00:00 EDT" "00:15:00 EDT" "00:30:00 EDT" "00:45:00 EDT" 
[5] "01:00:00 EDT" "01:15:00 EDT" "01:30:00 EDT" "01:45:00 EDT" 
[9] "01:00:00 EDT" "01:15:00 EDT" "01:30:00 EDT" "01:45:00 EDT" 
[13] "02:00:00 EST" "02:15:00 EST" "02:30:00 EST" "02:45:00 EST" 

Tại sao AM AM EDT xuất hiện hai lần? Không phải là thời gian một giờ sau 1 giờ sáng EDT là 1 AM EST? Đây có phải là sự cố với lubridate hoặc một số điều khoản nhỏ của hệ điều hành không?

+0

Chỉ cần lưu ý rằng lỗi này dường như đã được sửa. –

Trả lời

4

Tôi nghĩ đó là lỗi.

> seq(as.POSIXct("2011-11-06 00:15:00", tz='America/New_York'), 
     as.POSIXct('2011-11-06 02:45:00', tz='America/New_York'), 
     by='min')[c(TRUE, rep(FALSE, 14))] 

[1] "2011-11-06 00:15:00 EDT" "2011-11-06 00:30:00 EDT" "2011-11-06 00:45:00 EDT" 
[4] "2011-11-06 01:00:00 EDT" "2011-11-06 01:15:00 EDT" "2011-11-06 01:30:00 EDT" 
[7] "2011-11-06 01:45:00 EDT" "2011-11-06 01:00:00 EST" "2011-11-06 01:15:00 EST" 
[10] "2011-11-06 01:30:00 EST" "2011-11-06 01:45:00 EST" "2011-11-06 02:00:00 EST" 
[13] "2011-11-06 02:15:00 EST" "2011-11-06 02:30:00 EST" "2011-11-06 02:45:00 EST" 
+0

Cảm ơn. Chỉ cần được rõ ràng, nó có vẻ là một lỗi trong lubridate. – Ringold

+0

Có vẻ như vậy. Tuy nhiên, các vấn đề thời gian tiết kiệm thời gian và ánh sáng ban ngày thường phức tạp và hệ điều hành cụ thể. – GSee

+0

Tôi nhận được kết quả tương tự như @Gsee với phiên bản R 2.15.1 (2012-06-22) trên x86_64-pc-mingw32/x64 (64-bit), vì vậy nó có thể không có hệ điều hành cụ thể nhưng lubridate cụ thể. –

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