MATLAB: Datenum input string format

datenum

I have dates created by another software which have a different formats than recognized by MATLAB. These days are like this:
'2012-06-01T03:15:00Z'
I want to feed these dates to datenum() and extract the date and time, but datenum doesn't support this format. Is there any way to define a custom time format in matlab? or any other suggestion please
Bests

Best Answer

You can try to use FEX: DateStr2Num. This is 50 to 100 times faster than the powerful datenum command.
Although the format does not exactly match the style 31: "yyyy-mm-dd HH:MM:SS", the space and the last character is ignored at all. So try:
Dnum = DateStr2Num('2012-06-01T03:15:00Z', 31);
A cell string can be used as input directly also.
An alternative dull but fast Matlab code:
S = '2012-06-01T03:15:00Z';
x = S - '0';
D = datenummx( ...
x(1)*1000 + x(2)*100 + x(3)*10 + x(4), ... % Year
x(6)*10 + x(7), ... % Month
x(9)*10 + x(10), ... % Day
x(12)*10 + x(13), x(15)*10 + x(16), x(18)*10 + x(19));
As long as the input is well formatted, this works nice. But Matlab's datenum is smarter and considers e.g. overflows etc.