2016-04-14 3 views
1

в последовательном процессе получения, у меня есть входящие данныеНеправильное Преобразование из datenum

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

Здесь, результат время даты серийного сверху шага,

ans = 7.3648e+05` 

Когда я конвертировать назад, в результате чего в будущем заканчивается другое:

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

, где эта работа не работает?

+0

Пожалуйста, 'press' правильный синтаксис MATLAB. Также что находится в 'press (1)' и 'press (2)'? – Dan

+0

пробовал это - cstime = 10^7 * 60 * 60 * 24 * (датаэнд (cellfun (@ (x, y) [xy], давление (1), давление (2), 'un', 0))) - 367), и это дает то же самое время, что и вы. Странный... – 16per9

ответ

2

Когда вы комбинируете дату и час, вы должны убедиться, что между датой и часом есть пробел. Ваш вызов cellfun создает строку '2016-04-1414:18:48', которая затем неправильно интерпретируется.

cellfun(@(x,y) [x ' ' y],pressure(1),pressure(2),'un',0)) исправляет проблему. Обратите внимание, что вы можете оставить первый вызов datestr и написать

numericDate = datenum(cellfun(@(x,y) [x ' ' y],pressure(1),pressure(2),'un',0))) 
Смежные вопросы