BIENVENIDA RAZA INFORMATICA

QUE TAL GENTE INFORMÁTICA Y DEMÁS ASOCIADOS,



MI INTENCIÓN NO ES SER EL MAS CARAJO



SI NO AYUDAR A LA GENTE COMÚN Y CORRIENTE COMO YO, DE ALGUNOS PROBLEMAS COTIDIANOS QUE NOS ENCONTRAMOS EN EL MUNDO DE LA INFORMÁTICA

martes, 16 de febrero de 2010

Manejo de Fechas Delphi

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;