Genaue Konvertierung von Zeichen-> POSIXct-> Zeichen mit Datenzeiten unter einer Millisekunde
Ich habe eine Datetime-Zeichenspalte in einer Datei. Ich lade die Datei (in einedata.table
) und führen Sie Dinge aus, in die die Spalte konvertiert werden mussPOSIXct
. Ich muss dann das schreibenPOSIXct
Wert zurück in Datei, aber die Datums- / Uhrzeitangabe stimmt nicht überein (da sie falsch gedruckt wird).
Dieses Druck- / Formatierungsproblem ist allgemein bekannt und wurde bereits mehrmals erörtert. Ich habe einige Posts gelesen, die dieses Problem beschreiben. Die maßgeblichsten Antworten, die ich gefunden habe, werden als Antwort gegebendiese Frage. Die Antworten auf diese Frage bieten zwei Funktionen (myformat.POSIXct
undform
), die dieses Problem lösen sollen, aber an diesem Beispiel nicht zu arbeiten scheinen:
x <- "04-Jan-2013 17:22:08.139"
options("digits.secs"=6)
form(as.POSIXct(x,format="%d-%b-%Y %H:%M:%OS"),format="%d-%b-%Y %H:%M:%OS3")
[1] "04-Jan-2013 17:22:08.138"
form(as.POSIXct(x,format="%d-%b-%Y %H:%M:%OS"),format="%d-%b-%Y %H:%M:%OS4")
[1] "04-Jan-2013 17:22:08.1390"
myformat.POSIXct(as.POSIXct(x,format="%d-%b-%Y %H:%M:%OS"),digits=3)
[1] "2013-01-04 17:22:08.138"
myformat.POSIXct(as.POSIXct(x,format="%d-%b-%Y %H:%M:%OS"),digits=4)
[1] "2013-01-04 17:22:08.1390"
MeinesessionInfo
:
R version 2.15.2 (2012-10-26)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United Kingdom.1252
[3] LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C
[5] LC_TIME=C
attached base packages:
[1] stats graphics grDevices datasets utils methods base
other attached packages:
[1] fasttime_1.0-0 data.table_1.8.9 bit64_0.9-2 bit_1.1-9
[5] sas7bdat_0.3 chron_2.3-43 vimcom_0.9-6
loaded via a namespace (and not attached):
[1] tools_2.15.2