我想使用lubridate包中的with_tz()函数更改R中POSIXct对象的时区。
我从网站上提取的example为我工作:
meeting <- ymd_hms("2011-07-01 09:00:00", tz = "Pacific/Auckland")
with_tz(meeting, "America/Chicago")
但是这个没有,使用一些数据片段:
atime <- as.POSIXct("2016-11-04 18:04:30",
format="%Y-%m-%d %H:%M:%S",
tz="PST")
atime_utc <- with_tz(atime, "UTC")
str()和tz()显示新对象的时区为“UTC”,并且是POSIXct对象,但时间相同。在时区转换后,它们之间应该有8个小时。
使用不同功能的另一种解决方案也没问题。
答案 0 :(得分:0)
上面的评论应该很好,但是您也可以根据需要尝试force_tz
:
library(lubridate)
#>
#> Attaching package: 'lubridate'
#> The following object is masked from 'package:base':
#>
#> date
atime <- as.POSIXct("2016-11-04 18:04:30",
format="%Y-%m-%d %H:%M:%S",
tz="PST")
#> Warning in strptime(x, format, tz = tz): unknown timezone 'PST'
#> Warning in as.POSIXct.POSIXlt(as.POSIXlt(x, tz, ...), tz, ...): unknown
#> timezone 'PST'
tz(atime)
#> [1] "PST"
atime_utc <- with_tz(atime, "UTC")
force_tz(atime, "UTC")
#> [1] "2016-11-04 10:04:30 UTC"
由reprex package(v0.2.1)于2019-03-03创建