R lubridate 时间区问题

3
我想在R中使用lubridate包中的with_tz()函数更改POSIXct对象的时区。
我从网上找到了一个示例,它对我有效。
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个小时的差距。

使用不同函数的另一种解决方案也可以。


tz = "PST" 对我来说失败了,尽管这可能与区域设置有关。 - alistaire
1
最好从 OlsonNames() 中选择一个时区。 - Richard Telford
谢谢,"UTC"在OlsonNames()中,但是"PST"不在。如果原始时区是"US/Pacific",它会起作用。 - madroan
1个回答

1
上面的评论应该得到重视,但根据您的需求,您也可以尝试使用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包 (v0.2.1)在2019年03月03日创建


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接