Borrar filtros
Borrar filtros

datenum input string format

4 visualizaciones (últimos 30 días)
hasan
hasan el 18 de Jul. de 2013
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
  2 comentarios
Azzi Abdelmalek
Azzi Abdelmalek el 18 de Jul. de 2013
Are T and Z always in this format?
hasan
hasan el 18 de Jul. de 2013
yes, the format is the same all the time, just the numbers change.

Iniciar sesión para comentar.

Respuesta aceptada

Jan
Jan el 19 de Jul. de 2013
Editada: Jan el 19 de Jul. de 2013
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.

Más respuestas (3)

Azzi Abdelmalek
Azzi Abdelmalek el 18 de Jul. de 2013
Editada: Azzi Abdelmalek el 18 de Jul. de 2013
d='2012-06-01T03:15:00Z'
a=regexp(d,'[^T Z]+','match')
b=datestr(datenum(horzcat(a{:}),'yyyy-mm-ddHH:MM:SS'))
% or
d='2012-06-01T03:15:00Z'
a=regexprep(d,'[T Z]+',' ')

Azzi Abdelmalek
Azzi Abdelmalek el 18 de Jul. de 2013
d='2012-06-01T03:15:00Z'
out=datestr(datenum(d,'YYYY-mm-ddTHH:MM:SS'),'YYYY-mm-dd HH:MM:SS')

Andrei Bobrov
Andrei Bobrov el 18 de Jul. de 2013
q = '2012-06-01T03:15:00Z'
out = datenum(str2double(regexp(q,'\d*','match')));

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