2012-08-13 17 views
6

Tengo una serie de marcas de tiempo de caracteres en R. Cuando cambio su clase a POSIXct usando métodos intuitivos, R asigna la zona horaria ambigua EST.zonas horarias en R: ¿cómo evitar términos ambiguos como EST?

Por ejemplo:

as.POSIXct("2012-08-06 15:32:00") 
as.POSIXct("2012-08-06 15:32:00", tz = "Australia/Brisbane") 
as.POSIXct("2012-08-06 15:32:00", tz = "") 

todos producen el mismo resultado en mis dos cajas (Mac y Windows):

"2012-08-06 15:32:00 EST" 

El problema aquí es EST podría ser cualquier número de zonas horarias: Estándar del Este Hora en EE. UU. U Hora del Este de Australia u otra zona horaria en Canadá (desde ?timezone):

Tenga en cuenta que algunas de estas designaciones pueden no ser lo que piensa: en el EST particular es una zona horaria utilizada en Canadá sin horario de verano , y no EST5EDT ni (Australia) Eastern Standard Time.

Hay un método para configurar la zona horaria que evita esta etiqueta EST. Se alude, pero no se explica completamente en la ayuda de R ?timezone. Ajuste de x como el momento del aterrizaje de Curiosity en Marte según lo informado por un Australian news service:

x <- as.POSIXct("2012-08-06 15:32:00", tz = "Etc/GMT-10") 
x 
"2012-08-06 15:32:00 GMT-10" 

Y podemos probar que esto es correcto mediante la conversión a una zona horaria de Estados Unidos y la comprobación con un Californian news report:

y <- format(x, tz = "America/Los_Angeles") 
y 
"2012-08-05 22:32:00" 

Si se utiliza esta notación Etc/GMT+n o Etc/GMT-n, por favor, tenga cuidado con la siguiente salvedad de ?timezone:

Muchos los sistemas admiten zonas horarias de la forma GMT + ny GMT-n, que son con una desviación fija de UTC (por lo tanto, no DST). Contrario a algún uso (pero consistente con nombres como PST8PDT), los desplazamientos negativos son veces por delante (al este de) UTC, los desplazamientos positivos están detrás (al oeste de) UTC.

+0

acaba de encontrar esta [preguntas y respuestas relacionadas con] (http://stackoverflow.com/a/8011954/1265353) – sfuj

+2

se encuentra un tal 'mejores prácticas' para el manejo del tiempo/zona que pueden ayudar con los aspectos conceptuales lado de las cosas :: http://stackoverflow.com/questions/2532729/daylight-saving-time-and-timezone-best-practices. – Thell

Respuesta

6

La 1ª y 3ª líneas en el primer ejemplo producen el mismo resultado porque tz="" es el predeterminado para as.POSIXct. La segunda línea es más interesante porque la zona horaria está explícitamente definida.

Pero tenga en cuenta que "EST" solo muestra la forma predeterminada de la zona horaria. El atributo tzone aún no es ambiguo.

R> x <- as.POSIXct("2012-08-06 15:32:00", tz="Australia/Brisbane") 
R> x 
[1] "2012-08-06 15:32:00 EST" 
R> attr(x, "tzone") 
[1] "Australia/Brisbane" 
+0

Gracias Josh. Eso es todo lo que quería asegurarme. – sfuj

Cuestiones relacionadas