R as.POSIXct 时区问题

R as.POSIXct timezone issue

我对 R 中的 as.POSIXct 感到困惑。

我使用以下代码将列中的值转换为具有日期和时间的一列。

  fname$DateTime <- as.POSIXct(paste(fname$yy, fname$mm, fname$dd, fname$HH, fname$MM), format = "%y %m %d %H %M")

然后,我给作图设定了时间限制

  lims <- as.POSIXct(strptime(c("2015-10-23 4:00","2015-10-23 16:00"), format = "%Y-%m-%d %H:%M")) 
  Temp <- ggplot(DF, aes(x=DateTime, y=Temp)) + geom_line(aes(x=DateTime, y=Temp),colour="blue", alpha = 0.8) + scale_x_datetime(limits =lims, breaks=date_breaks("1 hour"), labels=date_format("%m/%d %H:%M")) + facet_wrap( ~ ID, ncol=4)
  Temp + geom_vline(xintercept=as.numeric(as.POSIXct("2015-10-23 10:30")), linetype=4, colour="purple") 

时间序列从 10/23 08:00 而不是 10/23 4:00 开始;结束于 10/23 20:00 而不是 10/23 16:00。垂直线显示在 10/23 14:30 而不是 10/23 10:30。时差4小时!

这是怎么回事?我怎样才能像数据框中显示的 DateTime 那样显示正确的时间序列?请帮我!

谢谢。

如果您在未指定时区的情况下使用 as.POSIXct,它会假定您输入的时间是 utc,并且还会假定您希望将它们转换为本地时区。为什么它做出这些经常错误的假设超出了我的范围...
尝试 as.POSIXct(..., tz=<enter your timezone>)

如果您不知道自己的时区,Sys.timezone(location = TRUE) 会告诉您所在的时区。