R 将日期转换为POSIXct
当转换为POSIXct时,为什么下面的日期变为“2014-07-07”R 将日期转换为POSIXct,r,date,posixct,R,Date,Posixct,当转换为POSIXct时,为什么下面的日期变为“2014-07-07” Sys.setenv(TZ='America/Sao_Paulo') d <- as.Date("2014-07-08", format="%Y-%m-%d") d [1] "2014-07-08" as.POSIXct(d) [1] "2014-07-07 21:00:00 BRT" Sys.setenv(TZ='America/圣保罗') d因为as.POSIXct.Date不查找时区(如果在中指定它,则不会将其
Sys.setenv(TZ='America/Sao_Paulo')
d <- as.Date("2014-07-08", format="%Y-%m-%d")
d
[1] "2014-07-08"
as.POSIXct(d)
[1] "2014-07-07 21:00:00 BRT"
Sys.setenv(TZ='America/圣保罗')
d因为as.POSIXct.Date
不查找时区(如果在中指定它,则不会将其传递给.POSIXct
),并且日期对象是“UTC”,因此POSIXct
与日期对象的UTC偏移
最好直接对字符串调用as.POSIXct
,如果可以:
> as.POSIXct("2014-07-08", format="%Y-%m-%d")
[1] "2014-07-08 BRT"
这可能与时区有关吗?如果您在调用as.POSIXct(d,tz=“…”)
时提供了一个特定的时区,该怎么办?@初学者我想知道发生这种情况的原因,我已经有了一个解决办法。可能正因为如此(from?as.POSIXct
):“没有时间的日期被视为UTC午夜。”fromat是什么?:)。。。或者先将日期转换为字符:as.POSIXct(格式(d))
谢谢,Joshua。这很奇怪,有一个(…)
参数,但它没有传递给。POSIXct
,传递一个简单的时区参数可以解决这个问题。POSIXct(unclass(d)*86400,tz=“UTC”)
@CarlosCinelli:我不确定这能解决它,因为那是UTC午夜,而不是当地时间午夜。