2009-09-08 3 views

risposta

11

In primo luogo, convertire l'ora di Londra a un oggetto POSIXct:

pb.txt <- "2009-06-03 19:30" 
pb.date <- as.POSIXct(pb.txt, tz="Europe/London") 

Quindi utilizzare format per stampare la data in un altro fuso orario:

> format(pb.date, tz="America/Los_Angeles",usetz=TRUE) 
[1] "2009-06-03 11:30:00 PDT" 

ci sono alcuni trucchi per trovare il momento giusto identificatore di zona da utilizzare. Maggiori dettagli in questo post il blog Revolutions: Converting time zones in R: tips, tricks and pitfalls

+0

Il formato convertirà l'oggetto posix in un carattere. – obesechicken13

+0

Questa conversione si occupa delle regolazioni di risparmio luce giorno? –

+0

Sì, esegue l'incremento/decremento appropriato se la posizione è nel database del fuso orario. –

39

Cambiare l'attributo TZONE di un oggetto 'POSIXct':

> pb.txt <- "2009-06-03 19:30" 
> pb.date <- as.POSIXct(pb.txt, tz="Europe/London") 
> attributes(pb.date)$tzone <- "America/Los_Angeles" 
> pb.date 
[1] "2009-06-03 11:30:00 PDT" 

Si noti che questo è ancora un oggetto POSIXct, TZONE è cambiato, e Offset Corretto ha stata applicata:

> attributes(pb.date) 
$class 
[1] "POSIXct" "POSIXt" 

$tzone 
[1] "America/Los_Angeles" 
+0

Non dimenticare di controllare il collegamento pubblicato nei commenti della risposta accettata (http://blog.revolution-computing.com/2009/06/converting-time-zones.html). Ho usato EST e ho pensato che questa risposta non funzionasse! – kaoD

16

pacchetto lubridate tiene due funzioni per la conversione fusi orari. Secondo le pagine di aiuto:


force_tz restituisce un data-ora che ha lo stesso tempo di orologio come x nel nuovo fuso orario.

force_tz(time, tzone = "America/Los_Angeles") 


with_tz cambia il fuso orario in cui viene visualizzato un istante. L'ora visualizzata per le modifiche istantanee, ma il momento descritto rimane lo stesso.

with_tz(time, tzone = "America/Los_Angeles") 
+2

molto più pulito rispetto ad altri metodi. –

Problemi correlati