Manejo de fechas en delphi – (II)
funciones para extraer parte de una fecha en delphi – DecodeDate, Tdate – TDateTime – Date Time routines, Rutinas de Fecha en delphi
Relacionados:
- Definicion de variables para tratar fechas en delph y tipecast (I)
- funciones para extraer partes de una fecha y codificar fechas (II)
- funciones para modificar fechas (III) *pronto
- funciones para comparar fechas (IV) *pronto
- funciones extras para fechas (V) *pronto
Funciones para extraer partes de una fecha
En delphi existen funciones especificas para extraer las partes que conforman una fecha como el año, mes y dia , y en caso de tener una variable con fecha y hora, podemos separar año, mes, dia , hora, minutos, segundos y milisegundos.
La función de que hablamos es DecodeDate, DecodeTime de la unidad SysUtils y DecodeDateTime de la unidad DateUtils
Procedure DecodeDate(Date: TDateTime,var Year, Month, Day: Word); //SysUtils
Procedure DecodeTime(Date: TDateTime,var Hour, Min, Sec, MSec: Word); //SysUtils
Procedure DecodeDateTime(Date: TDateTime,var Year, Month, Day, Hour, Min, Sec, MSec: Word); //DateUtils
Las variables que tendran las partes de la fecha las tendremos que declarar como Word y recuerde en cargar en Uses la libreria RTL DateUtils
Ejemplo
Uses DateUtils;
//...
var
MiFecha:TDateTime;
Year,Month,Day,Hour,Min,Sec,Msec:word;
begin
MiFecha := now(); //07-05-09 23:37
DecodeDate(MiFecha,Year,Month,Day);
DecodeTime(MiFecha,Hour,Min,Sec,MSec);
ShowMessage('Año ' + IntToStr(Year));
ShowMessage('Mes ' + IntToStr(Month));
ShowMessage('Dia ' + IntToStr(Day));
ShowMessage('Hora ' + IntToStr(Hour));
ShowMessage('Minuto ' + IntToStr(Min));
ShowMessage('Segundo ' + IntToStr(Sec));
ShowMessage('Milisegundo ' + IntToStr(MSec));
MiFecha := StrToDateTime('01/02/09 13:22:09,278');
DecodeDateTime(MiFecha,Year,Month,Day,Hour,Min,Sec,MSec);
ShowMessage('Año ' + IntToStr(Year));
ShowMessage('Mes ' + IntToStr(Month));
ShowMessage('Dia ' + IntToStr(Day));
ShowMessage('Hora ' + IntToStr(Hour));
ShowMessage('Minuto ' + IntToStr(Min));
ShowMessage('Segundo ' + IntToStr(Sec));
ShowMessage('Milisegundo ' + IntToStr(MSec));
Obtenemos el resultado
Mes = 05
Dia = 07
Hora = 23
Minuto = 37
Segundo = 0
MiliSegundo = 0Año = 2009
Mes = 02
Dia = 01
Hora = 13
Minuto = 22
Segundo = 09
MiliSegundo = 278
Funciones para crear fechas validas
Para crear, codificar fechas y horas en delphi tenemos la funciones EncodeDate, EncodeTime de las sysutils y la EncodeDateTime de la libreria DateUtils
function EncodeDate(Year, Month, Day: Word): TDateTime //SysUtils
function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime //SysUtils
function EncodeDateTime ( const Year, Month, Day, Hour, Min, Sec, MSec : Word ) : TDateTime; //DateUtils
Si entramos una fecha / hora incorrecta saltara una excepción de tipos EConvertError
El siguiente ejemplo creariamos una fecha 30/05/2009 la hora: 10:34
uses DateUtils; var MiData: TDate; MiHora: TTime; MiFecha: TDateTime; begin MiData := EncodeDate(2009,05,30); //30 de mayo del 2009 MiHora := EncodeTime(10,35,0,500); // 10:35 0 segundos y 500 milisegundos MiFecha := EncodeDateTime(2009,05,30,10,35,10,999); end;
Ejemplo para tratar la excepcion EconvertError, en caso que el usuario entre una fecha incorrecta
Try
MiData := EncodeDate(2009,02,30); //30 de febrero del 2009 *no existe
Except
on EConvertError do ShowMessage('entre una fecha valida porfavor');
end; //fin de excepcion
