Why does my datestr return weird result?

9 visualizaciones (últimos 30 días)
Numan
Numan el 15 de Dic. de 2011
I am experiencing some problem returning the correct results for my datestr function. When I execute the following script inside the command window:
datestr('18/10/2011 5:05:55 PM','dd/mm/yyyy HH:MM:SS PM')
the output came out as: 02/04/0024 5:05:55 PM
When I execute the following:
datestr('10/18/2011 5:05:55 PM','dd/mm/yyyy HH:MM:SS PM')
the output came out as: 18/10/2011 5:05:55 PM
Is is something to do with my Matlab setting? Basically I want to convert the given string (a time format written as string in dd/mm/yyyy HH:MM:SS pm) into Matlab datestr in dd/mm/yyyy HH:MM:SS pm format
Thanks in advance, Nu'man.

Respuesta aceptada

the cyclist
the cyclist el 15 de Dic. de 2011
When doing string-to-string date conversion, MATLAB assumes that the first input is in "MATLAB standard dateform", which will be mm/dd/yyyy etc. If you want to use a different dateform, you must first convert that to MATLAB standard dateform (using datenum), then convert it back using datestr.
Your second example is in standard dateform, and is correctly converted; your first is not (because it is in dd/mm/yyyy).
This is stated in the "Tips" section of "doc datestr", and in the last paragraph of "help datestr".
  1 comentario
Numan
Numan el 15 de Dic. de 2011
Cool, thanks. I didnt notice 'help datestr' is different from 'doc datestr'. 'help datestr' did explain the tip section better.

Iniciar sesión para comentar.

Más respuestas (2)

Jan
Jan el 15 de Dic. de 2011
Sorry, I do not get the point. You have a string in the format:
dd/mm/yyyy HH:MM:SS pm
and want to get a string in the format:
dd/mm/yyyy HH:MM:SS pm
???

Numan
Numan el 15 de Dic. de 2011
The reason behind this question is because I want to run a sql based on the user date input, the input string can be: '*', '*-30d', '18/10/2011' or '18/10/2011 5:05:55 PM'
Based on these inputs I want to manipulate it so the string appear as 'dd/mm/yyyy HH:MM:SS pm' format. Currently I've got the following in place to handle the input but keep getting the odd result.
symbol_star=regexpi(from, '[*-]', 'match');
[~,symbol_starc]=size(symbol_star);
switch symbol_starc
case 1
mod_from=datestr(now,'dd/mm/yyyy HH:MM:SS PM');
otherwise
symbol_minus=regexpi(from, '[-]', 'match');
[~,symbol_minusc]=size(symbol_minus);
switch symbol_minusc
case 1
dayminus=regexpi(from, '\d*', 'match');
dayminus=str2double(cell2mat(dayminus));
mod_from=datestr(now-dayminus,'dd/mm/yyyy HH:MM:SS PM');
otherwise
%the problem is here
mod_from=datestr(from,'dd/mm/yyyy HH:MM:SS PM');
end
end
Answers from 'the cyclist' and 'andrei' help me understood this better. THanks guys.

Categorías

Más información sobre Financial Toolbox 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