R: форматирование даты игнорирует часовой пояс для объектов 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"