2010-10-28 6 views

Respuesta

19

?Sys.timezone tiene algunas sugerencias, específicamente para mirar en: "R_HOME/share/zoneinfo/zone.tab" (R_HOME es el directorio R está instalado en). Tenga en cuenta que las zonas horarias son desagradables y muchos de sus matices son específicos del sistema operativo (¿y del lugar?).

En su caso específico, quiere "CST6CDT" en lugar de .

+0

Gracias, por lo que debe utilizar en lugar de EST5EDT EST? esto no es obvio ... – ahala

+2

Sí, o puede usar "America/New_York" como se define en el archivo "zones.tab". Como dije, desagradable ... –

5

No pude encontrarlo en esa ubicación en mi marca, pero encontré una versión comprimida en un directorio de origen. He aquí una lista de abreviaturas de zona horaria que aparecen en el nivel superior del archivo zones.tab:

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 

También hay carpetas con nombres continente/país, que tienen más opciones, como el ejemplo America/New_York encima .:

Africa/  Asia/  Canada/  Indian/ 
America/ Atlantic/ Chile/  Mexico/ 
Antarctica/ Australia/ Etc/  Pacific/ 
Arctic/  Brazil/  Europe/  US/ 

Esto se encontró en el archivo /R-2.11.1/src/extra/tzone/zoneinfo.zip.

13

Cosas de la zona horaria pueden conducirlo NUTS !!

Al estar situado en Alemania, esto es lo que solía hacer para establecer mi tz:

> options(tz="Europe/Berlin") 

Si lo hace, siempre me he preguntado por qué R tiraría advertencias "zona horaria desconocida":

> 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' 

Algún día descubrí que establecer tz a través de options() no era suficiente ya que la variable de entorno TZ no se ve afectada y, por tanto, todo el problema:

> Sys.getenv("TZ") 
[1] "MET-1MST" 

Cambiar esto debería acabar con las advertencias desagradables:

> 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" 
7

mayoría de las plataformas R utilizan la base de datos de zona horaria compilado por David Olson, donde la referencia preferida es la ubicación. Sus nombres están un poco desactualizados, pero te ayudarán a comenzar.

encontrar una lista completa de las zonas horarias disponibles (no funciona en Windows):

OlsonNames() 

Para la gente corriendo ventanas que() no funciona OlsonNames: See the full list here.

o leer con más detalle aquí http://www.twinsun.com/tz/tz-link.htm

+0

Funciona bien en mi Windows, Windows Server 2012 y Windows 10. –

+0

Hmm interesante ... funciona en nuestros servidores Linux pero no en mi escritorio de Windows. – mmann1123