Data.table: IDateTime informa una fecha incorrecta si la hora es superior a las 15:59 (tz = "America / Los_Angeles")

Creado en 15 ene. 2016  ·  5Comentarios  ·  Fuente: Rdatatable/data.table

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 no cambia la fecha

as.POSIXct (dt $ Hora)
as.POSIXct (dt $ Time, "% Y /% m /% d% H:% M", tz = "")

estas llamadas producen una salida incorrecta

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

bug idatitime

Todos 5 comentarios

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
¿Fue útil esta página
0 / 5 - 0 calificaciones