Date Conversion
    11 views (last 30 days)
  
       Show older comments
    
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 Comments
  Jan
      
      
 on 19 Dec 2011
				Are you sure about the colon before the fractional seconds? Usually there is a dot.
Accepted Answer
  Fangjun Jiang
      
      
 on 19 Dec 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 Comments
  Fangjun Jiang
      
      
 on 19 Dec 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
      
      
 on 19 Dec 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)
More Answers (3)
  Jose Jeremias Caballero
      
 on 19 Dec 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
0 Comments
  Jan
      
      
 on 19 Dec 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:
0 Comments
See Also
Categories
				Find more on Dates and Time in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



