【问题标题】:day function in lubridate package Rlubridate 包 R 中的日函数
【发布时间】:2018-04-03 16:15:34
【问题描述】:

我阅读了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 lubridate


    【解决方案1】:

    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 了解有效设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 2013-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多