una separar ordenar manipulacion horas hora filtrar fechas fecha extraer año agrupar r

separar - ¿Cómo se convierten las fechas/horas de una zona horaria a otra en R?



ordenar fechas en r (4)

Si tengo una fecha como esta en Londres: "2009-06-03 19:30", ¿cómo puedo convertirla a la hora equivalente en la costa oeste de EE. UU.?


Cambie el atributo tzone de un objeto ''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"

Tenga en cuenta que este sigue siendo un objeto POSIXct, tzone ha cambiado y se ha aplicado el desplazamiento correcto:

> attributes(pb.date) $class [1] "POSIXct" "POSIXt" $tzone [1] "America/Los_Angeles"


El paquete lubridate tiene dos funciones para convertir zonas horarias. De acuerdo con las páginas de ayuda:


force_tz devuelve una fecha-hora que tiene el mismo tiempo de reloj que x en la nueva zona horaria.

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


with_tz cambia la zona horaria en la que se muestra un instante. La hora del reloj que se muestra para el instante cambia, pero el momento del tiempo descrito sigue siendo el mismo.

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


Primero, convierta la hora de Londres en un objeto POSIXct :

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

Luego use el format para imprimir la fecha en otra zona horaria:

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

Hay algunos trucos para encontrar el identificador de zona horaria correcto para usar. Más detalles en este post en el blog de Revolutions: Conversión de zonas horarias en R: consejos, trucos y trampas


Si desea hacer esto en una línea, recuerde que cualquier objeto POSIXct en R es realmente solo un número (segundos UTC desde inicio de época), y que la "zona horaria" es solo un atributo que determina cómo se imprime ese número.

Por lo tanto, podemos usar la structure siguiente manera:

x = as.POSIXct("2009-06-03 19:30", tz = "Europe/London") structure(as.integer(x), class = class(x), tzone = ''America/Los_Angeles'') # [1] "2009-06-03 11:30:00 PDT"

as.integer quita la clase y los atributos de x , y la structure nos permite reconstruir / personalizar estos. class(x) es la abreviatura de c(''POSIXct'', ''POSIXt'') ; si su objeto tiene milisegundos y desea realizar un seguimiento de ellos, puede usar as.numeric(x) .