深入研究 R 包:lubridate 中的时区

Digging into R package: Time Zones in lubridate

我开始使用 R 中的 lubridate 包。我注意到 now(tzone="EST") 计算为:

[1] "2015-08-25 13:01:08 EST"

now(tzone="PST") 导致警告:

[1] "2015-08-25 18:02:16 GMT"
Warning message:
In as.POSIXlt.POSIXct(x, tz) : unknown timezone 'PST'

那么已知时区是什么? 有答案。但我想看看如何自己回答这个问题(即,通过挖掘包本身)。我看now()函数:

> now
function (tzone = "") 
with_tz(Sys.time(), tzone)
<environment: namespace:lubridate>

然后我看with_tz函数:

> with_tz
function (time, tzone = "") 
{
    check_tz(tzone)
    if (is.POSIXlt(time)) 
        new <- as.POSIXct(time)
    else new <- time
    attr(new, "tzone") <- tzone
    reclass_date(new, time)
}
<environment: namespace:lubridate>
> 

然后我检查 check_tz 函数:

> check_tz
Error: object 'check_tz' not found

没有。我在本地 lubridate R 库文件中搜索 check_tz。我没有找到任何东西。我执行 Google 搜索并找到 this GitHub page。在那里! olson_time_zones() 似乎列出了 已知的 时区。 (更新:olson_time_zones() 仅 returns 可用时区的一个子集。有关详细信息,请参阅下面我的评论。)特别是,

> now(tzone="America/Los_Angeles")
[1] "2015-08-25 11:11:14 PDT"

问:如果 Whosebug 上的 GitHub 或 post 上没有一个很好的文件,我怎么能回答我关于已知时区列表的问题答案?换句话说,我可以通过挖掘本地 lubridate 库文件找到我的答案吗?

问:是否有更通用的挖掘 R 包的原则值得指出?

您可以找到 lubridate 可用的时区列表:

lubridate::olson_time_zones()

通过键入可以轻松找到此信息

??timezones

在控制台中。 在我的案例中,描述此功能的 link 是帮助页面列表中的第二个条目:

另一种可能是在 lubridatemanual 中搜索 "available time zones"。