2009-09-08 67 views

Trả lời

11

Thứ nhất, chuyển đổi giờ Luân Đôn đến một đối tượng POSIXct:

pb.txt <- "2009-06-03 19:30" 
pb.date <- as.POSIXct(pb.txt, tz="Europe/London") 

Sau đó sử dụng format để in ngày trong một múi giờ:

> format(pb.date, tz="America/Los_Angeles",usetz=TRUE) 
[1] "2009-06-03 11:30:00 PDT" 

Có một số thủ thuật để tìm ra đúng thời điểm định danh vùng để sử dụng. Xem thêm chi tiết trong bài viết này tại blog Revolutions: Converting time zones in R: tips, tricks and pitfalls

+0

Định dạng sẽ chuyển đổi đối tượng posix thành ký tự. – obesechicken13

+0

Chuyển đổi này có xử lý các điều chỉnh tiết kiệm ánh sáng ban ngày không? –

+0

Có nó thực hiện tăng/giảm thích hợp nếu vị trí nằm trong cơ sở dữ liệu múi giờ. –

39

Thay đổi thuộc tính tzone của một đối tượng 'POSIXct':

> pb.txt <- "2009-06-03 19:30" 
> pb.date <- as.POSIXct(pb.txt, tz="Europe/London") 
> attributes(pb.date)$tzone <- "America/Los_Angeles" 
> pb.date 
[1] "2009-06-03 11:30:00 PDT" 

Lưu ý rằng đây vẫn là một đối tượng POSIXct, tzone đã thay đổi, và chính xác bù đắp có đã được áp dụng:

> attributes(pb.date) 
$class 
[1] "POSIXct" "POSIXt" 

$tzone 
[1] "America/Los_Angeles" 
+0

Đừng quên kiểm tra liên kết được đăng trong các bình luận của câu trả lời được chấp nhận (http://blog.revolution-computing.com/2009/06/converting-time-zones.html). Tôi đã sử dụng EST và nghĩ câu trả lời này không hiệu quả! – kaoD

16

Gói lubridate có hai chức năng để chuyển đổi múi giờ. Theo các trang trợ giúp:


force_tz trả về một ngày thời gian mà có thời gian đồng hồ giống như x theo múi giờ mới.

force_tz(time, tzone = "America/Los_Angeles") 


with_tz thay đổi múi giờ, trong đó ngay lập tức được hiển thị. Thời gian đồng hồ hiển thị cho các thay đổi tức thì, nhưng thời điểm được mô tả vẫn giữ nguyên.

with_tz(time, tzone = "America/Los_Angeles") 
+2

sạch hơn nhiều so với các phương pháp khác. –

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