挖掘R包:在lubridate中的时区

low*_*rul 3 r lubridate

我开始玩R中的lubridate包.我注意到now(tzone="EST")计算如下:

[1] "2015-08-25 13:01:08 EST"
Run Code Online (Sandbox Code Playgroud)

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

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

那么众所周知的时区是什么? Lubridate的有效时区有一个答案.但我想知道如何为自己解答这个问题(即通过挖掘包本身).我看看这个now()功能:

> now
function (tzone = "") 
with_tz(Sys.time(), tzone)
<environment: namespace:lubridate>
Run Code Online (Sandbox Code Playgroud)

那么我看一下这个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>
> 
Run Code Online (Sandbox Code Playgroud)

那么我检查一下这个check_tz功能:

> check_tz
Error: object 'check_tz' not found
Run Code Online (Sandbox Code Playgroud)

不在那里.我搜索我的本地lubridateR库文件check_tz.我找不到任何东西.我进行Google搜索并找到此GitHub页面.它就是!它似乎olson_time_zones()列出了已知的时区.(更新:olson_time_zones()仅返回可用时区的子集.有关详细信息,请参阅下面的评论.)特别是,

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

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

问:有没有更一般的原则来挖掘R包,值得指出?

RHe*_*tel 8

您可以通过以下方式找到可用的时区列表lubridate:

lubridate::olson_time_zones()
Run Code Online (Sandbox Code Playgroud)

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

??timezones
Run Code Online (Sandbox Code Playgroud)

在控制台中.描述此函数的链接是我案例中帮助页面列表中的第二个条目:

在此输入图像描述

另一种可能性是在手册中搜索lubridate"可用时区".