Data.table: IDateTime meldet falsches Datum, wenn die Zeit größer als 15:59 ist (tz="America/Los_Angeles")

Erstellt am 15. Jan. 2016  ·  5Kommentare  ·  Quelle: Rdatatable/data.table

IDateTime() generiert ein falsches Datum, wenn der Zeitanteil größer als 15:59 ist (tz="America/Los_Angeles")
Die Umrechnung aller Datensätze, die die Uhrzeit um/nach 15:59 meiner Zeitzone haben.

Details zum Problem unter:
http://stackoverflow.com/questions/34786887/why-does-idatetime-convert-to-the-wrong-date

Daten in der Datei FiveMinute.csv:
Zeit,Hoch,Niedrig,Offen,Schließen,Vol
13.01.2016 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

R-Skript:
Bibliothek(data.table)
csv1 = "FünfMinute.csv"
dt = fread(csv1)
dput(dt)

as.POSIXct ändert das Datum nicht

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

diese Aufrufe erzeugen eine falsche Ausgabe

IDateTime(as.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")))

System: Win10x64 R 3.2.2 data.table 1.9.6

bug idatitime

Alle 5 Kommentare

Der zweite Beitrag zu Ausgabe #977 gibt eine Spezialisierung von as.IDate.POSIXct , die ich verwende. Es wird die von POSIXct angegebene Zeitzone verwendet. Es führt auch eine Konvertierung durch, wenn Sie ein tz Argument übergeben. Beachten Sie jedoch, dass IDateTime derzeit keine zusätzlichen Argumente an as.IDate . In der Praxis definiere ich auch IDateTime , um die Argumente ... an as.IDate und as.ITime weiterzugeben.

Es ist mir nicht klar, was die Standards und Ziele bei IDateTime , daher habe ich nicht versucht, eine PR dafür zu machen, aber ich denke, es wird Ihr Problem lösen.

Danke, e-mu-pi. Sie haben die Ursache des Problems mit IDateTime identifiziert, das ich habe.

@MichaelChirico denkst du, du könntest dir das ansehen? (da Sie einige Probleme behoben / Verbesserungen mit IDate / ITime vorgenommen haben..)

@arunsrinivasan sicher, ich werde es auf meine Aufgabenliste setzen.

Ursprünglicher Beitrag etwas unklar.

Minimalbeispiel:

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
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen