我定义了一个带有时区的日期,但是当我使用scales
包date_format
打印它时,它给了我UTC时间,这对我的目的来说很尴尬.
> library(scales)
> st <- as.POSIXct("2015-10-31 00:00:00",tz="US/Pacific")
> st
[1] "2015-10-31 PDT"
> fmt <- date_format("%Y-%m-%d %R %Z")
> fmt(st)
[1] "2015-10-31 07:00 UTC"
有趣的是,这有效(所以 POSIXct
似乎理解时区) - 但没有给我对格式的足够控制:
> format(st,usetz=T)
[1] "2015-10-31 PDT"
?date_format
的帮助中暗示了这种不可靠性:
When %z or %Z is used for output with an object with an assigned time zone an attempt is made to use the values for that time zone — but it is not guaranteed to succeed.
所以我的问题是,如何使其成功?
建议解决方法很好,并且可能会获得支持,但请理解这个问题的要点是我想深入了解 date_format
的情况。
最佳答案
date_format
的定义非常简短:
function (format = "%Y-%m-%d", tz = "UTC")
{
function(x) format(x, format, tz = tz)
}
如果您不更改默认值,那么为什么时区会发生更改应该是显而易见的。
关于r - date_format时区奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36470541/