nome de fuso horário desconhecido em R strptime/as.POSIXct
Pergunta
Onde posso encontrar uma lista de todos os nomes de horários legais para a função R as.POSIXct
?
as.POSIXct("1970-01-01",tz="CST")
gera um aviso de que "CST" (Horário Padrão Central) é desconhecido.
Solução
?Sys.timezone
tem algumas dicas, especificamente para olhar: "R_HOME/share/zoneinfo/zone.tab"
(R_HOME
é o diretório em que R está instalado).Tenha em mente que os fusos horários são desagradáveis e muitas de suas nuances são específicas do sistema operacional (e da localidade?).
No seu caso específico, você quer "CST6CDT"
em vez de "CST"
.
Outras dicas
Coisas de fuso horário podem te levar Nozes!!
Estando localizado na Alemanha, é isso que eu costumava fazer para definir meu TZ:
> options(tz="Europe/Berlin")
Fazendo isso, eu sempre me perguntei por que R jogaria avisos "desconhecidos do fuso horário":
> t <- "2011-11-08 09:42:00"
> as.POSIXct(t, tz=getOption("tz"))
[1] "2011-11-08 09:42:00 CET"
Warning messages:
1: In strptime(xx, f <- "%Y-%m-%d %H:%M:%OS", tz = tz) :
unknown timezone 'MET-1MST'
2: In as.POSIXct.POSIXlt(x) : unknown timezone 'MET-1MST'
3: In strptime(x, f, tz = tz) : unknown timezone 'MET-1MST'
4: In as.POSIXct.POSIXlt(as.POSIXlt(x, tz, ...), tz, ...) :
unknown timezone 'MET-1MST'
5: In as.POSIXlt.POSIXct(x, tz) : unknown timezone 'MET-1MST'
Algum dia eu descobri essa configuração de TZ via options()
não foi suficiente como a variável ambiente TZ
não é afetado e, portanto, todo o problema:
> Sys.getenv("TZ")
[1] "MET-1MST"
Mudar isso deve acabar com os avisos desagradáveis:
> Sys.setenv(TZ="Europe/Berlin")
> Sys.getenv("TZ")
[1] "Europe/Berlin"
> as.POSIXct(t, tz=getOption("tz"))
[1] "2011-11-08 09:42:00 CET"
A maioria das plataformas R usa o banco de dados da zona do tempo compilada por David Olson, onde a referência preferida é por local. Lá, os nomes estão um pouco desatualizados, mas eles ajudarão você a continuar.
Encontre uma lista completa de fusos horários disponíveis (não funciona no Windows):
OlsonNames()
Para pessoas que executam janelas que o olsonNames () não funciona: Veja a lista completa aqui.
Ou leia com mais detalhes aqui http://www.twinsun.com/tz/tz-link.htm
Não consegui encontrá -lo naquele local na minha marca, mas encontrou uma versão zippeada em um diretório de origem. Aqui está uma lista de abreviações do fuso horário que aparecem no nível superior do zones.tab
Arquivo:
CET, CST6CDT, Cuba, EET, EST, EST5EDT, Egypt, Eire, Factory, GB, GB-Eire, GMT,
GMT+0, GMT-0, GMT0, Greenwich, HST, Hongkong, Iceland, Iran, Israel, Jamaica, Japan,
Kwajalein, Libya, MET, MST, MST7MDT, NZ, NZ-CHAT, Navajo, PRC, PST8PDT, Poland, Portugal,
ROC, ROK, Singapore, Turkey, UCT, UTC, Universal, W-SU, WET, Zulu
Também existem pastas com nomes de continentes/países, que têm mais opções como o America/New_York
Exemplo acima.:
Africa/ Asia/ Canada/ Indian/
America/ Atlantic/ Chile/ Mexico/
Antarctica/ Australia/ Etc/ Pacific/
Arctic/ Brazil/ Europe/ US/
Isso foi encontrado no /R-2.11.1/src/extra/tzone/zoneinfo.zip
Arquivo.