lubridate包R中的day函数

day function in lubridate package R

我阅读了 lubridate 包中 day 函数的描述,并试图了解它是如何工作的。这是我的例子:

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”

有人可以澄清一下吗?

R date-times 存储为 UTC(又名 GMT,又名 UCT)时间。当 as.POSIXct 仅给出一个日期值时,它会自动假定为午夜。您的结果在英国格林威治的午夜显示“2017-02-01”作为您当地时区的时间(可能是美国东部标准时间)。我实际上无法在我的 Mac 上重现此行为。我得到:

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

不同的操作系统可能会以不同的方式处理它们的时区约定。开始的帮助页面是:

?DateTimeClasses

Some Unix-like systems (especially Linux ones) do not have environment variable TZ set, yet have internal code that expects it (as does POSIX). We have tried to work around this, but if you get unexpected results try setting TZ. See ?Sys.timezone for valid settings.