mundodelphi

programacion en delphi

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

Año = 2009
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
Tagged as: , , ,

Leave a Response

Please note: comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.

Google Analytics Alternative