2016-04-14 15 views
1

in einem seriellen Empfangsprozess habe ich eine eingehende DatenFalsche Konvertierung von DATENUM

pressure ={'2016-04-14' '14:18:48' '321'} 
datenum(datestr(cellfun(@(x,y) [x y],pressure(1),pressure(2),'un',0))); 

Hier das Ergebnis Datum zeitseriellen von oben Schritt

ans = 7.3648e+05` 

Als ich zurück konvertieren, die Ergebnis gibt eine andere Zeit in die Zukunft:

datestr(ans) 
ans = 29-May-2016 22:18:48 

wo funktioniert das falsch?

+0

Bitte 'press' richtige MATLAB-Syntax machen. Auch was ist in 'press (1)' und 'press (2)'? – Dan

+0

hat dies versucht - cstime = 10^7 * 60 * 60 * 24 * (datenum (Datumstr (cellfun (@ (x, y) [xy], Druck (1), Druck (2), 'un', 0))) - 367) und es gibt genau die gleiche Zeit, die du hast. Seltsam... – 16per9

Antwort

2

Wenn Sie Datum und Uhrzeit kombinieren, müssen Sie sicherstellen, dass zwischen dem Datum und der Stunde ein Leerzeichen steht. Ihr cellfun Aufruf erstellt die Zeichenfolge '2016-04-1414:18:48', die dann falsch interpretiert wird.

cellfun(@(x,y) [x ' ' y],pressure(1),pressure(2),'un',0)) behebt das Problem. Beachten Sie, dass Sie den ersten Anruf zu datestr fallen können, und schreiben

numericDate = datenum(cellfun(@(x,y) [x ' ' y],pressure(1),pressure(2),'un',0)))