Manejo de fechas en delphi
funciones para fechas delphi – TDate – TDateTime – TTime – rutinas de fechas en delphi
El siguiente articulo vamos a ver como manejar fechas y horas en delphi
las funciones que veremos pertenecen a la unidad SysUtils y la mayoría en DateUtils que a partir de delphi 6 están con nosotros, con ellas podremos resolver dilemas como:
• extraer parte de la fecha, año, mes, día
• incrementar años, meses, días en una fecha y viceversa
• comparar dos fechas
• saber cuántos días faltan por una fecha
• validar una fecha
• saber si es un año bisiesto
• día de la semana de una fecha
Definición de variables de tipo fecha
Para manejar fechas en delphi necesitamos definir las variables con el tipo adecuado para fechas, para ello tenemos en disposición de tres tipos TDate – TTime y TDateTime
TDate Para almacenar una fecha día/mes/año
TTime Para almacenar una hora, hora: minuto: segundo
TDateTime Es una combinación de las dos anteriores: día/mes/año hora: minuto: segundo
Ejemplo:
var
MiData: Tdate; //variable de data 00/00/00
MiHora: TTime; //variable de hora 00:00:00
MiFecha: TDateTime; //variable con data y hora 00/00/00 00:00:00
Funciones básicas para obtener fechas
unidad: SysUtils
date() : devuelve la data actual
time() GetTime() : devuelve la hora actual
now() : devuelve la data y hora actual
Ojo si utilizamos variables de tipo TDateTime y usamos time() o GetTime() el data por defecto es 30/12/1899
Ejemplo:
MiData := date(); //29/06/08
MiHora := time(); //14:08
MiFecha := now(); //29/06/08 14:08
MiFecha := GetTime(); // 30/12/1899 14:08
Funciones de salida para fechas “OUTPUT”
Para mostrar una variable de contenedor fecha en pantalla, en un editbox,label,listbox etc.. tenemos que pasar la fecha en formato cadena “string”, para ello usaremos la funciones convertidoras de tipos “casting” apropiadas
unidad: SysUtils
DateToStr :Convierte de Data a texto
TimeToStr :Convierte de Hora a texto
DateTimeToStr :Convierte de Data y Hora a texto
Ejemplo:
edit1.text := DateToStr(MiData);
edit1.text := TimeToStr(MiHora);
edit1.text := DateTimeToStr(MiFecha);
Funciones de entrada para fechas “INPUT”
Podemos utilizar (StrToDate – STrToTime – StrToDateTime) para que el usuario puede agregar datas manualmente o bien para predeterminar la fecha o hora
unidad: SysUtils
StrToDate :Convierte de texto a Data
STrToTime :Convierte de texto a Hora
StrToDateTime :Convierte de texto a Data y Hora
Para componer una fecha en delphi tenemos el siguiente formato Dia/Mes/Año Hora:Minuto:Segundo,Milisegundo
Ejemplo:
MiData := StrToDate('01/06/2008');
MiHora := StrToTime('10:20:30');
MiFecha := StrToDateTime('01/06/2008 10:20:30,232');
Nota: si se pasa una fecha o tiempo incorrecto salta una excepción de tipo EConvertError
Funciones typecast validadoras de fechas
Podemos usar el manejo de excepciones (try, except, finally) o bien usar la funciones TryStrToDate, TryStrToTime, TryStrToDateTime que veremos después
cuando pasamos una fecha o tiempo incorrecto delphi salta con una excepción de tipo EConvertError la podemos capturar con “on EConvertError”
Ejemplo
var
MiFecha:Tdatetime;
Begin
Ttry
MiFecha := StrToDate('01/06/2008');
Except
on EConvertError do
ShowMessage('Fecha incorrecta');
End;
End;
Funciones TryStrToDate, TryStrToTime y TryStrToDateTime, todas se llaman de la siguiente manera nombrefuncion(donde_guardar,fecha_a_pasar) nos devuelve con un booleano si ha sido correcta o no la conversión
Ejemplo
var
MiFecha:Tdatetime;
cadena:string;
Begin
cadena := '31/02/2009';
If (TryStrToDateTime(cadena,mifecha)) then
showmessage('conversion correcta')
else
showmessage('conversion incorrecta');
end;