我使用时区定义了一个日期,但是当我使用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
的帮助中暗示了这种不可靠性:
当%z或%Z用于具有指定时间的对象的输出时 区域尝试使用该时区的值 - 但它 不能保证会成功。
所以我的问题是,我如何使成功?
建议解决方法很好并且可能会受到赞成,但请理解这个问题的重点是我希望了解date_format
的内容。
答案 0 :(得分:3)
date_format
的定义很短:
function (format = "%Y-%m-%d", tz = "UTC")
{
function(x) format(x, format, tz = tz)
}
如果你不改变默认值,为什么更改时区应该是显而易见的。