R:日期格式化忽略POSIXlt对象的时区

时间:2015-12-09 13:03:27

标签: r timezone posixct posixlt

我无法让R在所需的时区中格式化POSIXlt个对象。 POSIXct按预期工作。这是一个错误还是我错过了什么?

date.str = "2015-12-09 13:30"
from = "Europe/London"
to = "America/Los_Angeles"

lt = as.POSIXlt(date.str, tz=from)
format(lt, tz=to, usetz=TRUE)
#[1] "2015-12-09 13:30:00 GMT"

ct = as.POSIXct(date.str, tz=from)
format(ct, tz=to, usetz=TRUE)
#[1] "2015-12-09 05:30:00 PST"

tzone属性相同:

attributes(ct)$tzone
#[1] "Europe/London"
attributes(lt)$tzone
#[1] "Europe/London"

解决方案

正如@nicola所指出的,format.POSIXlt没有tz参数。要在另一个时区打印POSIXlt日期,可以使用lubridate包将POSIXlt对象首先转换为所需的时区:

require(lubridate)
lt.changed = with_tz(lt, tz=to)
format(lt.changed, usetz=TRUE)
#[1] "2015-12-09 05:30:00 PST"

0 个答案:

没有答案