UP | HOME |

Zonas horarias en R

Zonas horarias en R

Las zonas horarias en R se controlan mediante el atributo tzone de un objeto de tiempo. Los más conocidos son UTC, que es el tiempo universal (una hora menos que en la España peninsular), y las zonas CET y Europe/Madrid, que son equivalentes.

Definimos una cadena de caracteres y la transformamos en un objeto de tiempo.

string <- "2021-12-31T15:40:00Z" # Cadena
(time1 <- as.POSIXct(string,tz="Europe/Madrid",format="%Y-%m-%dT%H:%M:%OSZ"))
[1] "2021-12-31 15:40:00 CET"

Sus atributos comprenden la clase de objeto (tiempo) y la zona horaria.

attributes(time1)
$class
[1] "POSIXct" "POSIXt" 

$tzone
[1] "Europe/Madrid"

Si cambiamos la zona horaria, aparece el tiempo equivalente en esa nueva zona horaria. En este caso muestra una diferencia horaria de seis horas.

attr(time1,"tzone") <- "America/New_York"
time1
[1] "2021-12-31 09:40:00 EST"

Por último, si tratamos un valor numérico, lo hemos de convertir con la zona horaria deseada. Si no se especifica ninguna zona, utiliza CET, pues es la que por defecto define el sistema. En el siguiente ejemplo se observa que hay una diferencia de una hora, debido al cambio de zona de horaria (UTC versus CET).

n1 <- as.integer(time1)
(as.POSIXct(n1,tz="UTC",origin="1970-01-01"))
(as.POSIXct(n1,origin="1970-01-01")) # Por defecto coge tz="CET"
[1] "2021-12-31 14:40:00 UTC"
[1] "2021-12-31 15:40:00 CET"

En la función fread del paquete data.table se utiliza por defecto tz=`UTC`. En caso de emplear tz=``, la función de lectura selecciona la zona horaria del sistema. Conviene revisar que los datos de tiempo no estén desplazados una hora por el uso de UTC en vez de CET o viceversa.