在lubridate包R中的日功能

时间:2018-04-03 16:15:34

标签: r date lubridate

我在day包中阅读了lubridate函数的说明,并试图了解其工作原理。这是我的例子:

library(lubridate)
test_date <- as.POSIXct('2017-02-28')
day(test_date) <-1

现在test_date包含“2017-01-31 18:00:00 CST”,而我希望它有'2017-02-01'

有人可以澄清吗?

1 个答案:

答案 0 :(得分:2)

R日期时间存储为UTC(也称为GMT,又名UCT)次。当as.POSIXct只给出一个日期值时,它会自动假定为午夜。您的结果是在英格兰格林威治的午夜显示'2017-02-01'作为您当地时区的时间(可能是美国东部标准时间)。我实际上无法在我的Mac上重现这种行为。我明白了:

> day(test_date) <- 1
> test_date
[1] "2017-02-01 PST"

不同的操作系统可能会以不同的方式处理其时区约定。帮助页面首先是:

?DateTimeClasses
  

某些类Unix系统(特别是Linux系统)没有设置环境变量TZ,但却有内部代码需要它(就像POSIX一样)。我们试图解决这个问题,但如果你得到意想不到的结果,请尝试设置TZ。有关有效设置,请参阅?Sys.timezone。