2009-09-08 117 views

回答

11

首先,轉換倫敦時間爲POSIXct對象:

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

然後使用format打印在另一個時區的日期:

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

有一些技巧,以尋找合適的時間區域標識符使用。 Converting time zones in R: tips, tricks and pitfalls

+0

格式會將posix對象轉換爲字符。 – obesechicken13 2012-12-10 18:00:47

+0

此轉換是否照顧日光節省調整? – 2014-09-07 08:09:59

+0

是的,如果位置在時區數據庫中,它確實執行了適當的遞增/遞減。 – 2015-04-28 14:47:17

39

更改了「POSIXct」對象的tzone屬性:在這個崗位在革命博客更多細節

> 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" 

注意,這仍然是一個POSIXct對象,tzone發生了變化,並糾正偏差有已應用:

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

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

不要忘記檢查接受答案的評論中發佈的鏈接(http://blog.revolution-computing.com/2009/06/converting-time-zones.html)。我使用了EST,並認爲這個答案不起作用! – kaoD 2013-06-23 19:33:16

16

lubridate包含兩個函數來轉換時區。據幫助頁面:


force_tz返回的日期,時間,具有相同的時鐘時間爲新的時區x

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


with_tz改變其上顯示時刻的時區。爲即時顯示的時鐘時間會發生變化,但描述的時間保持不變。

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

比其他方法清潔得多。 – 2016-01-07 19:31:04

相關問題