2010-10-28 4 views

Répondre

19

?Sys.timezone a quelques conseils, en particulier pour regarder: "R_HOME/share/zoneinfo/zone.tab" (R_HOME est le répertoire R est installé dans). Gardez à l'esprit que les fuseaux horaires sont méchants et que beaucoup de leurs nuances sont spécifiques au système d'exploitation (et aux paramètres régionaux?).

Dans votre cas spécifique, vous voulez "CST6CDT" au lieu de "CST".

+0

Merci, donc je dois utiliser EST5EDT plutôt que EST? ce n'est pas évident ... – ahala

+2

Oui, ou vous pouvez utiliser "America/New_York" tel que défini dans le fichier "zones.tab". Comme je l'ai dit, méchant ... –

5

Impossible de le trouver à cet emplacement sur ma marque mais trouvé une version compressée dans un répertoire source. Voici une liste des abréviations de fuseau horaire qui apparaissent au niveau supérieur du fichier 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 

Il y a des dossiers aussi avec des noms continent/pays, qui ont plus d'options telles que l'exemple America/New_York ci-dessus .:

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

Cela a été trouvé dans le fichier /R-2.11.1/src/extra/tzone/zoneinfo.zip.

13

Les trucs de fuseau horaire peuvent vous conduire NUTS !!

étant situé en Allemagne, ce que je faisais pour mettre mon tz:

> options(tz="Europe/Berlin") 

Ce faisant, je me demandais toujours pourquoi R jetterait avertissements « fuseau horaire inconnu »:

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

Un jour, j'ai découvert que le réglage de tz via options() n'était pas suffisant car la variable d'environnement TZ n'est pas affectée et donc tous les problèmes:

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

Changer cela devrait faire disparaître les avertissements désagréables:

> 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

La plupart des plates-formes R utilisent la base de données de fuseau horaire compilé par David Olson, où la référence préférée est par emplacement. Les noms sont un peu désuets mais ils vous aideront à y aller.

Trouver une liste complète des fuseaux horaires disponibles (ne fonctionne pas sur les fenêtres):

OlsonNames() 

Pour les gens qui exécutent Windows qui ne fonctionne pas OlsonNames(): See the full list here.

Ou lire plus en détail ici http://www.twinsun.com/tz/tz-link.htm

+0

Fonctionne très bien sur mon Windows, à la fois Windows Server 2012 et Windows 10. –

+0

Hmm intéressant ... fonctionne sur nos serveurs Linux, mais pas sur mon bureau Windows. – mmann1123