datenum input string format

4 vues (au cours des 30 derniers jours)
hasan
hasan le 18 Juil 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 commentaires
Azzi Abdelmalek
Azzi Abdelmalek le 18 Juil 2013
Are T and Z always in this format?
hasan
hasan le 18 Juil 2013
yes, the format is the same all the time, just the numbers change.

Connectez-vous pour commenter.

Réponse acceptée

Jan
Jan le 19 Juil 2013
Modifié(e) : Jan le 19 Juil 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.

Plus de réponses (3)

Azzi Abdelmalek
Azzi Abdelmalek le 18 Juil 2013
Modifié(e) : Azzi Abdelmalek le 18 Juil 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 le 18 Juil 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 le 18 Juil 2013
q = '2012-06-01T03:15:00Z'
out = datenum(str2double(regexp(q,'\d*','match')));

Catégories

En savoir plus sur Dates and Time dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by