Date Conversion

5 visualizaciones (últimos 30 días)
Syed Abbas
Syed Abbas el 19 de Dic. de 2011
Hi,
I have a <200x1 cell> array which consists of dates read through a text file. The dates are in the format yyyy/mm/dd hh:mm:ss:fff. I want to convert these dates into a matlab recognizable date vector which could then be later used in creating time series objects. I am not sure how to do this.
Thanks,
  2 comentarios
Jan
Jan el 19 de Dic. de 2011
Are you sure about the colon before the fractional seconds? Usually there is a dot.
Syed Abbas
Syed Abbas el 19 de Dic. de 2011
Oh, that works now! I mistook the colun for the dot. Thansk a lot for ponting that out.

Iniciar sesión para comentar.

Respuesta aceptada

Fangjun Jiang
Fangjun Jiang el 19 de Dic. de 2011
datenum()
>> dates={'2011/11/11 11:11:11:111';'2012/12/12 12:12:12:121'}
datenum(dates,'yyyy/mm/dd HH:MM:SS:FFF')
dates =
'2011/11/11 11:11:11:111'
'2012/12/12 12:12:12:121'
ans =
1.0e+005 *
7.3482
7.3522
  9 comentarios
Fangjun Jiang
Fangjun Jiang el 19 de Dic. de 2011
Change the last column symbol ":" in the format string to ".". Your data is different than you described in your question. Jan was right. It usually is HH:MM:SS.FFF, not HH:MM:SS:FFF
Fangjun Jiang
Fangjun Jiang el 19 de Dic. de 2011
Or you don't need to specify the format anymore since it is standard.
%%
Dates={'2011/12/15 09:00:00.039';'2011/12/15 09:00:00.039'};
datenum(Dates)

Iniciar sesión para comentar.

Más respuestas (3)

Walter Roberson
Walter Roberson el 19 de Dic. de 2011
  4 comentarios
Syed Abbas
Syed Abbas el 19 de Dic. de 2011
size shows 1 23 and class shows char
Syed Abbas
Syed Abbas el 19 de Dic. de 2011
I get the following error with cell fun:
Error using cellfun
Input #2 expected to be a cell array, was char instead.

Iniciar sesión para comentar.


Jose Jeremias Caballero
Jose Jeremias Caballero el 19 de Dic. de 2011
Hello.
>> A={'2011/12/19 13:27:50.890';'2012/12/19 18:49:40.790'}
A =
'2011/12/19 13:27:50.890'
'2012/12/19 18:49:40.790'
>> vector=datevec(A, 'yyyy/mm/dd HH:MM:SS.FFF')
vector =
1.0e+003 *
2.0110 0.0120 0.0190 0.0130 0.0270 0.0509
2.0120 0.0120 0.0190 0.0180 0.0490 0.0408

Jan
Jan el 19 de Dic. de 2011
A less intelligent, but much faster method than DATENUM:
dates = {'2011/11/11 11:11:11.111'; ...
'2012/12/12 12:12:12.121'};
function Vector = myDateConversion(DateCell)
S = sprintf('%s ', DateCell{:});
D = sscanf(S, '%d/%d/%d %d:%d:%f');
Vector = transpose(reshape(D, 6, []));
On Matlab 2009a this is 5 times faster than datevec(dates, 'yyyy/mm/dd HH:MM:SS.FFF'), but datevec is much smarter and converts the '2011/32/12' correctly.
The date topic has been discussed in Mike's blog recently:

Categorías

Más información sobre Dates and Time en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by