Código
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] of String = ('Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira', 'Sábado');
semana1 : array[1..7] of String = ('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;
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009