这不是一个错误吗?
as.POSIXct(as.Date("2013/01/01"))
结果:
[1] "2012-12-31 19:00:00 EST"
答案 0 :(得分:4)
它调用as.POSIXct.Date
方法,即
function (x, ...)
.POSIXct(unclass(x) * 86400)
请注意,虽然它有这样的参数,但不可能将时区传递给.POSIXct
:
function (xx, tz = NULL)
structure(xx, class = c("POSIXct", "POSIXt"), tzone = tz)
所以这发生了:
structure(unclass(as.Date("2013/01/01")) * 86400,
class = c("POSIXct", "POSIXt"), tzone = "EST")
#[1] "2012-12-31 19:00:00 EST"
如果要转换Date
s:
structure(unclass(as.Date("2013/01/01")) * 86400,
class = c("POSIXct", "POSIXt"), tzone = "GMT")
#"2013-01-01 GMT"
或将as.POSIXct.Date
修改为
function (x, tz=NULL,...) .POSIXct(unclass(x) * 86400, tz = tz)