私はPOSIXct
オブジェクトを持っていて、tz
それを解釈するために R なしで属性を変更したいと考えています (日時が画面に表示される方法を変更することを意味すると解釈します)。
いくつかの背景: 私はfasttime
S.Urbanek のパッケージを使用しています。これは、文字列を取得してPOSIXct
非常に迅速にキャストします。問題は、文字列が「GMT」の日時を表す必要があり、私のデータには当てはまらないことです。
でタイムゾーンを変更すると、実際にはのPOSIXct
オブジェクトになりますtz=GMT
tz=GMT+1
attr(datetime, "tzone") <- "Europe/Paris";
datetime <- .POSIXct(datetime,tz="Europe/Paris");
次に、「表示」されますGMT+2
(基になる値は変更されません)。
編集:これは例です
datetime=as.POSIXct("2011-01-01 12:32:23.234",tz="GMT")
attributes(datetime)
#$tzone
#[1] "GMT"
datetime
#[1] "2011-01-01 12:32:23.233 GMT"
R を使用せずにこの属性を変更して解釈するにはどうすればよいですか? どうすれば tzone を変更しても datetime を として表示できます"2011-01-01 12:32:23.233"
か?
EDIT/SOLUTION、@GSeeのソリューションはかなり高速で、lubridate::force_tzは非常に遅いです
datetime=rep(as.POSIXct("2011-01-01 12:32:23.234",tz="GMT"),1e5)
f <- function(x,tz) return(as.POSIXct(as.numeric(x), origin="1970-01-01", tz=tz))
> system.time(datetime2 <- f(datetime,"Europe/Paris"))
user system elapsed
0.01 0.00 0.02
> system.time(datetime3 <- force_tz(datetime,"Europe/Paris"))
user system elapsed
5.94 0.02 5.98
identical(datetime2,datetime3)
[1] TRUE