IDateTime () genera una fecha incorrecta si la porción de tiempo es mayor que 15:59 (tz = "America / Los_Angeles")
La conversión de todos los registros que tienen la hora en / después de las 15:59 de mi zona horaria.
Detalles del problema en:
http://stackoverflow.com/questions/34786887/why-does-idatetime-convert-to-the-wrong-date
Datos en el archivo FiveMinute.csv:
Tiempo, alto, bajo, abierto, cerrado, vol.
2016/01/13 11: 00,4.8100,4.7875,4.8050,4.7900,543
2016/01/13 11: 05,4.7950,4.7825,4.7900,4.7925,781
2016/01/13 11: 10,4.7925,4.7750,4.7925,4.7775,2787
2016/01/13 11: 15,4.7850,4.7775,4.7800,4.7800,659
2016/01/13 17: 00,4.7800,4.7700,4.7800,4.7700,371
2016/01/13 17: 05,4.7750,4.7700,4.7700,4.7700,158
2016/01/13 17: 10,4.7675,4.7550,4.7675,4.7550,288
Secuencia de comandos R:
biblioteca (tabla de datos)
csv1 = "FiveMinute.csv"
dt = fread (csv1)
dput (dt)
as.POSIXct (dt $ Hora)
as.POSIXct (dt $ Time, "% Y /% m /% d% H:% M", tz = "")
IDateTime (como.POSIXct (dt $ Time))
IDateTime (as.POSIXct (dt $ Time, tz = ""))
IDateTime (as.POSIXct (dt $ Time, tz = "America / Los_Angeles"))
IDateTime (as.POSIXct (dt $ Time, "% Y /% m /% d% H:% M", tz = ""))
IDateTime (as.POSIXct (dt $ Time, "% Y /% m /% d% H:% M", tz = "America / Los_Angeles"))
dput (IDateTime (as.POSIXct (dt $ Time, "% Y /% m /% d% H:% M", tz = "America / Los_Angeles")))
dput (IDateTime (as.POSIXct (dt [, Time], "% Y /% m /% d% H:% M", tz = "America / Los_Angeles")))
Sistema: Win10x64 R 3.2.2 data.table 1.9.6
La segunda publicación sobre el número 977 ofrece una especialización de as.IDate.POSIXct
que yo uso. Utilizará la zona horaria especificada por POSIXct. También hará la conversión si pasa un argumento tz
, pero tenga en cuenta que actualmente IDateTime
no pasa argumentos adicionales a as.IDate
. En la práctica, también redefiní IDateTime
para pasar los argumentos ...
a as.IDate
y as.ITime
.
No tengo claro cuáles son los estándares y objetivos alrededor de IDateTime
, por lo que no he intentado hacer un PR para esto, pero creo que abordará su problema.
Gracias, e-mu-pi. Ha identificado la causa del problema con IDateTime que estoy experimentando.
@MichaelChirico , ¿crees que podrías echarle un vistazo a esto? (ya que solucionó algunos problemas / realizó mejoras con IDate / ITime ..)
@arunsrinivasan seguro, lo pondré en mi lista de tareas.
Publicación original un poco confusa.
Ejemplo mínimo:
as.POSIXct("2016/01/13 17:00", tz = "America/Los_Angeles")
# [1] "2016-01-13 17:00:00 PST"
IDateTime(as.POSIXct("2016/01/13 17:00", tz = "America/Los_Angeles"))
# idate itime
# 1: 2016-01-14 17:00:00