as.POSIXct fornece um fuso horário inesperado
Estou tentando converter um yearmon date (a partir dejardim zoológic package) para um POSIXct no fuso horário UTC. Isto é o que eu tentei fazer:
> as.POSIXct(as.yearmon("2010-01-01"), tz="UTC")
[1] "2010-01-01 01:00:00 CET"
Recebo o mesmo ao converter uma Data:
> as.POSIXct(as.Date("2010-01-01"),tz="UTC")
[1] "2010-01-01 01:00:00 CET"
A única maneira de fazê-lo funcionar é passar um caractere como argumento:
> as.POSIXct("2010-01-01", tz="UTC")
[1] "2010-01-01 UTC"
Examinei a documentação de DateTimeClasses, tzset efusos horário. Meu / etc / localtime está definido como Europe / Amsterdam. Não consegui encontrar uma maneira de definir tz como UTC, além de definir a variável de ambiente TZ:
> Sys.setenv(TZ="UTC")
> as.POSIXct(as.Date("2010-01-01"),tz="UTC")
[1] "2010-01-01 UTC"
É possível definir o fuso horário diretamente ao criar um POSIXct a partir de um ano ou data?
Editar
Verifiquei as funções como.POSIXct.ano. Este passa para o as.POSIXct.Date.
> zoo:::as.POSIXct.yearmon
function (x, tz = "", ...)
as.POSIXct(as.Date(x), tz = tz, ...)
<environment: namespace:zoo>
Assim como Joshua diz que o fuso horário se perde no as.POSIXct.Date. Por enquanto, usarei a sugestão Richies para definir o tzone manualmente usando:
attr (x, "tzone") <- 'UTC'
Isto resolve o problema da zona perdida, que é usada apenas para apresentação e não internamente, como sugerido por Grothendieck e Dwi