Я пытаюсь преобразовать дату yearmon (из zoo) в POSIXct в часовом поясе UTC. Это то, что я пытался сделать:
> as.POSIXct(as.yearmon("2010-01-01"), tz="UTC")
[1] "2010-01-01 01:00:00 CET"
Я получаю то же самое, когда я конвертирую Date:
> as.POSIXct(as.Date("2010-01-01"),tz="UTC")
[1] "2010-01-01 01:00:00 CET"
Единственный способ заставить его работать - передать символ в качестве аргумента:
> as.POSIXct("2010-01-01", tz="UTC")
[1] "2010-01-01 UTC"
Я просмотрел документацию DateTimeClasses, tzset и timezones. Мой /etc/localtime установлен в Европу/Амстердам. Я не мог найти способ установить tz в UTC, кроме установки переменной окружения TZ:
> Sys.setenv(TZ="UTC")
> as.POSIXct(as.Date("2010-01-01"),tz="UTC")
[1] "2010-01-01 UTC"
Возможно ли установить часовой пояс при создании POSIXct из yearmon или Date?
Изменить:
Я проверил функции as.POSIXct.yearmon. Он переходит к as.POSIXct.Date.
> zoo:::as.POSIXct.yearmon
function (x, tz = "", ...)
as.POSIXct(as.Date(x), tz = tz, ...)
<environment: namespace:zoo>
Так как Джошуа говорит, что часовой пояс теряется в as.POSIXct.Date. Пока я буду использовать предложение Ричи, чтобы установить tzone вручную, используя:
attr (x, "tzone" ) < - 'UTC'
Это решает проблему потерянного тзона, который используется только для представления, а не для внутреннего, как предложил Гротендик и Двин.