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(dt$Zeit)
as.POSIXct(dt$Time, "%Y/%m/%d %H:%M", tz="")
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
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