Konvertieren von Epoche zu Datum in Matlab
Ich habe ein array von Epoche Millisekunden (array von zahlen) in Matlab. Ich würde gerne konvertieren Sie diese in UTC-Datum-Zeit-format wie DD-MM-YYYY HH:MM.
Gibt es eine vordefinierte Matlab-Weg, dies zu tun oder muss ich auf das schreiben meiner eigenen Funktion?
- Sie sind wahrscheinlich auf der Suche nach der
datestr
Funktion.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Angenommen, Sie beginnen mit einem Vektor
time_unix
, dann:Hinweise:
1) Siehe die definition von matlab ist an der Zeit.
2) 8.64e7 ist die Anzahl der Millisekunden in einem Tag.
3) Matlab gilt nicht für alle Zeit-zone verschiebt sich, so das Ergebnis der gleichen UTC-Zeit.
4) Beispiel für die rückwärts-transformation:
Zusammen zu fassen, hier sind zwei Funktionen:
Den matlab-Zeit ist hier numerisch. Sie können immer konvertieren string datestr()
Update Nanosekunden
864e5
werden müssen kann864e8
oder sogar864e11
.... micro or nano...
, gut, nur teilen Sie es entsprechendtime_unix = 1339116554872;
ist auch doppeltIch habe versucht den obigen code, aber die Ergebnisse waren falsch. Ich merkte, dass die wichtigsten Fehler bezieht sich auf die schwierige definition der Unix-Zeit (epoch time). Unix-Zeit (epoch time) ist definiert als die Anzahl der Sekunden nach 1-1-1970, 00:00, nicht die Anzahl der **milli**Sekunden (http://en.wikipedia.org/wiki/Unix_time). Mit dieser definition, die Unix-Zeit sollte daher durch 8 geteilt.64e5 statt 8.64e7.
Darüber hinaus
datenum('1970', 'yyyy')
scheint nicht die gewünschte Bezugszeit von 1-1-1970, 00:00 Uhr.Hier mein verbesserter code:
Serg s Antwort ist das, was ich normalerweise verwenden, wenn ich arbeiten bin in MATLAB. Heute fand ich mich wollen, um die Konvertierung zu Datum in MATLAB wie der Titel sagt - ohne die datestring-Konvertierung angegeben in der Frage nach Körper - und Ausgang die Zahl, die aus der Schale.
Hier ist was ich sich auf für die gerundete Zahl:
Ist dies wirklich nur das bash-äquivalent zu dem, was man erwarten würde: 719529 ist die datenum der Epoche (1970-01-01 oder
datenum(1970,1,1)
in MATLAB). Ich bin auch durch Fummelei ksh in letzter Zeit und es scheint, dieses kann gemacht werden mit:Als Nebeneffekt der übung, ich habe den Dezimalteil wieder auf das Datum im bash - ich wollte nicht stören ksh-Shell, aber es ist nur Arithmetik und geht ähnlich: