Я пытаюсь преобразовать дату 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 и часовые пояса . Мое / etc / localtime установлено на Europe / Amsterdam. Мне не удалось найти способ установить tz равным UTC, кроме установки переменной среды TZ:
> Sys.setenv(TZ="UTC")
> as.POSIXct(as.Date("2010-01-01"),tz="UTC")
[1] "2010-01-01 UTC"
Можно ли напрямую установить часовой пояс при создании POSIXct из года или даты?
Изменить:
] Я проверил функции как .POSIXct.yearmon. Этот переходит в as.POSIXct.Date.
> zoo:::as.POSIXct.yearmon
function (x, tz = "", ...)
as.POSIXct(as.Date(x), tz = tz, ...)
Так, как говорит Джошуа, часовой пояс теряется в as.POSIXct.Date. На данный момент я воспользуюсь предложением Ричиса, чтобы установить тональный сигнал вручную, используя:
attr (x, "tzone")
Это решает проблему потерянного тонального сигнала, который используется только для презентации. а не внутренне, как предполагали Гротендик и Двин.