Data.table: IDateTime signale une date erronée si l'heure est supérieure à 15:59 (tz="America/Los_Angeles")

Créé le 15 janv. 2016  ·  5Commentaires  ·  Source: Rdatatable/data.table

IDateTime() génère une date erronée si la partie horaire est supérieure à 15:59 (tz="America/Los_Angeles")
La conversion de tous les enregistrements qui ont l'heure à/après 15h59 de mon fuseau horaire.

Détails du problème sur :
http://stackoverflow.com/questions/34786887/why-does-idatetime-convert-to-the-wrong-date

Données dans le fichier FiveMinute.csv :
Temps,Haut,Bas,Ouvert,Fermé,Vol
2016/01/13 11:00,4.8100,4.7875,4.8050,4.7900,543
13/01/2016 11:05,4.7950,4.7825,4.7900,4.7925.781
13/01/2016 11:10,4,7925,4,7750,4,7925,4,7775,2787
13/01/2016 11:15,4.7850,4.7775,4.7800,4.7800,659
13/01/2016 17:00,4.7800,4.7700,4.7800,4.7700,371
13/01/2016 17:05,4.7750,4.7700,4.7700,4.7700,158
13/01/2016 17:10,4,7675,4,7550,4,7675,4,7550,288

Script R :
bibliothèque (données.table)
csv1 = "CinqMinute.csv"
dt = peur (csv1)
sortie(dt)

as.POSIXct ne change pas la date

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

ces appels produisent une sortie incorrecte

IDateTime(as.POSIXct(dt$Time))
IDateTime(as.POSIXct(dt$Time, tz=""))
IDateTime(as.POSIXct(dt$Time, tz="Amérique/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")))

Système : Win10x64 R 3.2.2 data.table 1.9.6

bug idatitime

Tous les 5 commentaires

Le deuxième article sur le numéro 977 donne une spécialisation de as.IDate.POSIXct que j'utilise. Il utilisera le fuseau horaire spécifié par le POSIXct. Il effectuera également la conversion si vous transmettez un argument tz , mais notez qu'actuellement IDateTime ne transmet pas d'arguments supplémentaires à as.IDate . En pratique, je redéfinis également IDateTime pour transmettre les arguments ... à as.IDate et as.ITime .

Je ne sais pas exactement quels sont les standards et les objectifs autour de IDateTime , donc je n'ai pas essayé de faire de relations publiques pour cela, mais je pense que cela résoudra votre problème.

Merci, e-mu-pi. Vous avez identifié la cause du problème avec IDateTime que je rencontre.

@MichaelChirico pensez -vous que vous pourriez jeter un œil à cela? (puisque vous avez corrigé certains problèmes / apporté des améliorations avec IDate / ITime..)

@arunsrinivasan bien sûr, je vais le mettre sur ma liste de tâches.

Message d'origine un peu flou.

Exemple minimal :

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
Cette page vous a été utile?
0 / 5 - 0 notes