date_format timezone strangeness

时间:2016-04-07 08:21:16

标签: r timezone

我使用时区定义了一个日期,但是当我使用scalesdate_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的内容。

1 个答案:

答案 0 :(得分:3)

date_format的定义很短:

function (format = "%Y-%m-%d", tz = "UTC") 
{
    function(x) format(x, format, tz = tz)
}

如果你不改变默认值,为什么更改时区应该是显而易见的。