Em alguns campos do banco de dados ou em qualquer parte de um projeto precisamos de diversos tipos de datas. Você pode conseguir isso com uma função única que formata a data do jeito que precisar sem ter que desenvolver uma rotina para cada tipo de data que precisa.
A função pode ser declarada num formulário principal e ser usada o tempo todo em qualquer parte do aplicativo.
Para usar é simples
Você pode chamar a função onde precisar converter ou datar um campo com formato especifico em qualquer lugar do aplicativo.
Exemplo:
Hoje :=Tform.datarcampo(date,’DD/MM/AAAA’); o resultado será em formato string e não data.
Idade := tform.datarcampo(data de nascimento, ‘IDADE’); O resultado será a idade da pessoa;
Os formatos são:
formato= 'DD/MM/AAAA' data digitada em 4 digitos.
formato= 'MM/DD/AAAA' data em formato Americano (mes, dia e ano)
formato= 'MM/01/AAAA' Retorna o 1º dia do mês no formato Americano.
Formato= 'MM/??/AAAA' Retorna o ultimo dia do mes no formato Americano. formato= 'AAAA/MM/DD' retorna a data em formato (ano, mes e dia).
formato= 'AAAA/MM/01' Retorna a data em formato (ano, mês, 1º dia).
formato= 'AAAA/MM/??' retorna a data em formato (ano, mês, ultimo dia mês) (30,31,28);
formato= '01/MM/AAAA' retorna data com o 1º dia do mes.
formato= 'DD/MM' retorna dia e mes extraindo o ano.
formato= 'MM/AAAA' Retorna mes e ano ;
formato= '??/MM/AAAA' Retorna da data com o ultimo dia do mes;
formato = 'AAAAMM??' Retorna a data em Numero AAAAMMDD;
formato = 'AAAAMM01' Retorna a data em numero AAAAMM01;
formato = 'AAAAMMDD' Retorna a data em AnoMesDia formato numero.
formato = 'AAAAMM' Retorna a data somente AnoMes (numero)
formato = 'MMDD' Retorna a data em MesDia (numero)
formato = 'MM01' Retorna a data MesDia01.
formato = 'MM??' Retorna a data MesUltimodia (30,31,28).
formato = 'AAAA' Retorna somente o ano da data.
formato = 'MM' Retorna somente o mes da data.
formato = 'DD' Retorna somente o dia da data.
formato = 'IDADE' Retorna a idade da pessoa.
formato = 'SEMANA1' Retorna o dia da semana abreviado (dom, seg, ter)
formato = 'SEMANA' Retorna o dia da semana extenso (segunda-feira, terça-Feira).
NOTA: Digite o formato sempre em MAIUSCULAS. Declare a função para poder usar em qualquer form de seu projeto.
Function TForm.DatarCampo(Data:tdatetime;Formato:string):string; const
DiasDoMes: array[1..12] of Integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
semana : array[1..7] ofString= ('Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira', 'Sábado');
semana1 : array[1..7] ofString= ('Dom','Seg','Ter','Quar','Qui','Sex', 'Sab'); var
year, month, day: word;
dia, mes, ano: string;
id,im,ia:word;
AMes,AANO,Ndias: Integer;
idade:integer; begin
decodedate (Data, year, month, day);
dia := inttostr(day);
mes := inttostr(month);
ano := inttostr(year);
dia:= FormatFloat('00',StrToFloat(dia));
Mes:= FormatFloat('00',StrToFloat(Mes));
Ano:= FormatFloat('0000',StrToFloat(Ano));
AMes:= Strtoint(mes);
AAno:= Strtoint(ano); if AMes = 2 then begin if AAno mod 4 = 0 then begin
Inc(DiasdoMes[AMes]); end; end; if formato = 'IDADE' then begin
DecodeDate(Data, ia, im, id);
DecodeDate(date, Year, Month, day);
idade := Year - Ia;
if (IM > Month) or ((im = Month) and (Id > Day)) then
Dec(Idade); end;
NDias := DiasdoMes[AMes];
If formato= 'DD/MM/AAAA' Then result := Dia +'/'+ mes +'/'+ ano; If formato= 'MM/DD/AAAA' Then result := mes +'/'+ dia+'/'+ ano; If formato= 'MM/01/AAAA' Then result := mes +'/'+ '01'+'/'+ ano; If formato= 'MM/??/AAAA' Then result := mes +'/'+ InttoStr(Ndias)+'/'+ ano; If formato= 'AAAA/MM/DD' Then result := ano +'/'+ mes+'/'+ dia; If formato= 'AAAA/MM/01' Then result := ano +'/'+ mes+'/'+ '01'; If formato= 'AAAA/MM/??' Then result := ano +'/'+ mes+'/'+ InttoStr(Ndias); If formato= '01/MM/AAAA' Then result := '01' +'/'+ Mes +'/'+ ano; If formato= 'DD/MM' Then result := Dia +'/'+ mes; If formato= 'MM/AAAA' Then result := mes +'/'+ ano; If formato= '??/MM/AAAA' Then result := InttoStr(Ndias) +'/'+ Mes+'/'+ ano; if formato = 'AAAAMM??' then Result:= ano+ mes + InttoStr(Ndias); if formato = 'AAAAMM01' then Result:= ano+ mes +'01'; if formato = 'AAAAMMDD' then Result:= ano+ mes + dia; if formato = 'AAAAMM' then Result :=ano + mes; if formato = 'MMDD' then Result:= mes+ dia; if formato = 'MM01' then Result:= mes+ '01'; if formato = 'MM??' then Result:= mes+ InttoStr(Ndias); if formato = 'AAAA' then Result:= ano; if formato = 'MM' then Result:= mes ; if formato = 'DD' then Result:= dia; if formato = 'IDADE' then Result:= INTTOSTR(IDADE); if formato = 'SEMANA1' then Result:=semana1[DayOfWeek(Date)]; if formato = 'SEMANA' then Result:= semana[DayOfWeek(Date)]; If result = '' then result := datetostr(date); end;