Borrar filtros
Borrar filtros

Validation of a date with a given format

25 visualizaciones (últimos 30 días)
Julián Francisco
Julián Francisco el 14 de Abr. de 2011
Hi. I am designing a GUI. I have an edit text box where I enter a date string with the following format '31 Mar 2011 10:00:00.000'. I need code to validate it and write an error message in case of invalid input. Thank you for your attention. Cheers.

Respuesta aceptada

Julián Francisco
Julián Francisco el 15 de Abr. de 2011
Thank you all for the answers. This is one of the posible callback function codes corresponding to the edit text box that it can be used:
user_entry = get(hObject,'string');
control = regexp(user_entry,'[0-3]\d (Jan|Feb|Mar|...|Dec) \d\d\d\d (0\d|1[0-2]):[0-5]\d:[0-5]\d.\d\d\d')
if(numel(control)==0)
errordlg('Invalid Input Format','Error Message','modal')
uicontrol(hObject)
end

Más respuestas (3)

Matt Fig
Matt Fig el 14 de Abr. de 2011
try
D = datenum(Inpt,'dd mmm yyyy HH:MM:SS.FFF')
catch
error('Incorrect Format')
end
  4 comentarios
Julián Francisco
Julián Francisco el 15 de Abr. de 2011
@Matt Fig: Thank you for your answer. Excuse me for being pedantic. It was not my intention. Cheers.
Matt Fig
Matt Fig el 15 de Abr. de 2011
I wasn't saying you _were_ pedantic, only that as far as I know, you _might_ want to the user to enter in exactly 3 values for the milliseconds position. If you don't care about this, then the code should work fine if the user enters only one value. All else will be checked as you requested....

Iniciar sesión para comentar.


Matt Tearle
Matt Tearle el 14 de Abr. de 2011
fmt = 'dd mmm yyyy HH:MM:SS.FFF';
dt = [];
while isempty(dt)
x = input(['enter date string in ',fmt,' format: '],'s');
try
dt = datenum(x,fmt);
catch
disp(['Hey idiot, I said ',fmt,' format'])
end
end
(Obviously I'm using input in place of the GUI entry, but the basic structure/flow would be the same)
  1 comentario
Julián Francisco
Julián Francisco el 15 de Abr. de 2011
Thank you for your answer. I grateful your intention of giving the first response. Cheers.

Iniciar sesión para comentar.


Walter Roberson
Walter Roberson el 14 de Abr. de 2011
% 31 Mar 2011 10:00:00.000
Basic validation:
regexp(t, '[0-3]\d (Jan|Feb|Mar|...|Dec) \d\d\d\d (0\d|1[0-2]):[0-5]\d:[0-5]\d.\d\d\d')
Once you've done the basic validation, you can cross-check for consistency such as the maximum day number being appropriate for the month.
  3 comentarios
Julián Francisco
Julián Francisco el 15 de Abr. de 2011
@Walter Roberson: Thank you for your answer. It looks like to be the shortest one but it needs adittional code to show an error message. Cheers.
Julián Francisco
Julián Francisco el 15 de Abr. de 2011
@Jan Simon: Thank you for your suggestion. Cheers.

Iniciar sesión para comentar.

Categorías

Más información sobre Just for fun en Help Center y File Exchange.

Etiquetas

Aún no se han introducido etiquetas.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by