zona verano significa segundos que now horario horaria hora fortnite europeo europa cet central cambio argentina r posixct

verano - zona horaria europa



La conversión de caracteres POSIXct en R causa valores de zona horaria incorrectos en la transición del horario de verano(CEST/CET)) (1)

Tengo un problema al convertir POSIXct a carácter y luego a POSIXct en R. Ejecuto el siguiente código:

time_seq_01 <- seq(as.POSIXct("2012-10-28 02:00:00"), by = 900, length.out = 10) time_seq_02 <- as.character(time_seq_01) time_seq_03 <- as.POSIXct(time_seq_02)

o equivalente:

time_seq_01 <- seq(as.POSIXct("2012-10-28 02:00:00"), by = 900, length.out = 10) time_seq_02 <- format(time_seq_01,usetz = TRUE) time_seq_03 <- as.POSIXct(time_seq_02)

Estas son las marcas de tiempo en 2012 cuando se produce la transición del horario de verano del horario de verano de Europa Central (CEST) al horario de Europa Central (último domingo de octubre de 02:00 a 03:00).

Cuando llamo a estos elementos obtengo

time_seq_01 [1] "2012-10-28 02:00:00 CEST" "2012-10-28 02:15:00 CEST" [3] "2012-10-28 02:30:00 CEST" "2012-10-28 02:45:00 CEST" [5] "2012-10-28 02:00:00 CET" "2012-10-28 02:15:00 CET" [7] "2012-10-28 02:30:00 CET" "2012-10-28 02:45:00 CET" [9] "2012-10-28 03:00:00 CET" "2012-10-28 03:15:00 CET" time_seq_02 [1] "2012-10-28 02:00:00 CEST" "2012-10-28 02:15:00 CEST" [3] "2012-10-28 02:30:00 CEST" "2012-10-28 02:45:00 CEST" [5] "2012-10-28 02:00:00 CET" "2012-10-28 02:15:00 CET" [7] "2012-10-28 02:30:00 CET" "2012-10-28 02:45:00 CET" [9] "2012-10-28 03:00:00 CET" "2012-10-28 03:15:00 CET" time_seq_03 [1] "2012-10-28 02:00:00 CEST" "2012-10-28 02:15:00 CEST" [3] "2012-10-28 02:30:00 CEST" "2012-10-28 02:45:00 CET" [5] "2012-10-28 02:00:00 CEST" "2012-10-28 02:15:00 CEST" [7] "2012-10-28 02:30:00 CEST" "2012-10-28 02:45:00 CET" [9] "2012-10-28 03:00:00 CET" "2012-10-28 03:15:00 CET"

La creación de una secuencia POSIXct funciona correctamente ( time_seq_01 ) y la transición al carácter también ( time_seq_02 ). Sin embargo, la transición de regreso del carácter a POSIXct produce valores de zona horaria (CET / CEST) time_seq_03 ( time_seq_03 ). Esto se puede ver claramente cuando esos elementos están ordenados:

sort(time_seq_01) [1] "2012-10-28 02:00:00 CEST" "2012-10-28 02:15:00 CEST" [3] "2012-10-28 02:30:00 CEST" "2012-10-28 02:45:00 CEST" [5] "2012-10-28 02:00:00 CET" "2012-10-28 02:15:00 CET" [7] "2012-10-28 02:30:00 CET" "2012-10-28 02:45:00 CET" [9] "2012-10-28 03:00:00 CET" "2012-10-28 03:15:00 CET" sort(time_seq_03) [1] "2012-10-28 02:00:00 CEST" "2012-10-28 02:00:00 CEST" [3] "2012-10-28 02:15:00 CEST" "2012-10-28 02:15:00 CEST" [5] "2012-10-28 02:30:00 CEST" "2012-10-28 02:30:00 CEST" [7] "2012-10-28 02:45:00 CET" "2012-10-28 02:45:00 CET" [9] "2012-10-28 03:00:00 CET" "2012-10-28 03:15:00 CET"

Esto causa una serie de problemas, por ejemplo, al combinar objetos por esas marcas de tiempo. ¿Hay alguna manera de superar este problema?

El sistema que utilizo:

Windows 7 64bit R version 2.15.1 (2012-06-22) Platform: x86_64-pc-mingw32/x64 (64-bit) locale: [1] LC_COLLATE=German_Austria.1252 LC_CTYPE=German_Austria.1252 [3] LC_MONETARY=German_Austria.1252 LC_NUMERIC=C [5] LC_TIME=German_Austria.1252 attached base packages: [1] tools stats graphics grDevices utils datasets methods [8] base other attached packages: [1] pkgtools_0.1-3 roxygen2_2.2.2 digest_0.5.2 rj_1.1.0-4 loaded via a namespace (and not attached): [1] brew_1.0-6 plyr_1.7.1 rj.gd_1.1.0-1 stringr_0.6.1


A continuación, se presenta una POSIXct que va de POSIXct a character nuevo a POSIXct conservando el estado original del horario de verano.

Sys.setenv(TZ=''Europe/Berlin'') # to reproduce OP''s example time_seq_01 <- seq(as.POSIXct("2012-10-28 02:00:00"), by = 900, length.out = 10) time_seq_02 <- format(time_seq_01,usetz = TRUE) time_seq_02_lt <- as.POSIXlt(time_seq_02) time_seq_02_lt$isdst <- as.POSIXlt(time_seq_01)$isdst time_seq_03 <- as.POSIXct(time_seq_02_lt)

Por lo que puedo decir, el soporte de R para string-dat-datetime no incluye indicadores DST especificados dentro de las cadenas.