Buscar

Função para formatação de datas diversas.

Código

Função para formatação de datas diversas.

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;
 

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Data e hora
Adicionada dia: 07/04/07
Por: Leonel Fabiano Pereira Da Silva
Visualizada: 21647 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009