|
Usuários |
|
182 Usuários Online
|
|
[Dicas]
Funções para trabalhar com datas |
Publicado por deivdysouza : Segunda, Setembro 20, 2010 - 10:18 GMT-3 (1579 leituras)
12 Comentários Enviar para um amigo Versão para impressão
|
Nem sempre fazer "Data+30" ou "Data-30" resolve um problema, pois as vezes não podemos mexer no dia de uma data e os meses não possuem a mesma quantidade de dias! Veja nesta dica algumas funções criadas para resolver este problema!
As funcões abaixo foram criadas por Deivdy Do Carmo De Souza, usuário deivdysouza do site, para tirar tantos meses ou anos de uma data, sem mexer nos dias:
function TiraDias(data: tdatetime; menosdias: tdatetime): tdatetime;
begin
result := strtodatetime(formatdatetime('dd/mm/yyyy', data - menosdias));
end;
//corrigida em 22/09/2010 por Kelver Merlotti: acrescentado o bloco repeat..until
function TiraMeses(data: tdatetime; menosmeses: integer): tdatetime;
var
Y, M, D: integer;
datacalc: string;
begin
Y := strtoint(formatdatetime('yyyy', data));
M := strtoint(formatdatetime('MM', data)) - menosmeses;
repeat
if M <= 0 then
begin
Y := Y - 1;
if M < 0 then
M := 12 + M
else
M := 12;
end;
until M > 0;
D := strtoint(formatdatetime('DD', data));
datacalc := inttostr(D) + '/' + inttostr(M) + '/' + inttostr(Y);
result := strtodatetime(datacalc);
end;
function TiraAnos(data: tdatetime; menosanos: integer): tdatetime;
var
Y, M, D: integer;
datacalc: string;
begin
Y := strtoint(formatdatetime('yyyy', data)) - menosanos;
M := strtoint(formatdatetime('MM', data));
D := strtoint(formatdatetime('DD', data));
datacalc := inttostr(D) + '/' + inttostr(M) + '/' + inttostr(Y);
result := strtodatetime(datacalc);
end;
Segue abaixo um exemplo de uso, no evento onClick de um botão:
procedure TForm1.Button1Click(Sender: TObject);
var
dthr: TDateTime;
begin
dthr := Date;
ShowMessage(DateTimeToStr(dthr));
dthr := TiraMeses(dthr, 4);
ShowMessage(DateTimeToStr(dthr));
dthr := TiraAnos(dthr, 3);
ShowMessage(DateTimeToStr(dthr));
end;
Por: Deivdy Do Carmo De Souza (deivdysouza)
Contato: deivdysouza@gmail.com
Dica do Editor
Veja também esta outra dica publicada no site pelo usuário edusorio, com mais funções e caminhos alternativos para trabalhar com datas: Funções para manipulação de datas
Kelver Merlotti - Coordenador Editorial
Contato: kelver@activedelphi.com.br
|
|
Comentários | |
| | Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos. |
por: deivdysouza (deivdysouza@gmail.com)
: Set 21, 2010 - 01:02 (Informações sobre o membro | Enviar uma mensagem)
|
Demorou Mais ela está ai!
São Funcões Simples de manipular!
Bom Proveito!
O mundo é um lugar perigoso de se viver, não por causa daqueles que fazem o mal, mas sim por causa daqueles que observam e deixam o mal acontecer.
Programador...
Deivdy Do Carmo De Souza
Todos Os Direitos Reservados
|
por: gilsonnrodrigues (gilsonnr@hotmail.com)
: Set 24, 2010 - 09:14 (Informações sobre o membro | Enviar uma mensagem)
http://
|
isso q dá o cara não saber porra nenhuma e achar q pode ensinar.
o tiradia é a coisa mais triste q já vi.
o tirameses tente com 31/01/2010 e tirar um mês.
.tiradia
se o pc do cara estiver usando formato americano dá pau.
sem falar q era só fazer assim:
Data - Dias;
result := strtodatetime(formatdatetime('dd/mm/yyyy', data - menosdias));
pra q essas conversoes pra lá e pra cá?
o tirameses é IncMonth(Data, -Meses);
|
[ Comentários não permitidos para usuários anônimos. Por gentileza, registre-se ou conecte-se ao sistema
por: deivdysouza (deivdysouza@gmail.com) : Set 24, 2010 - 10:09 (Informações sobre o membro | Enviar uma mensagem) http:// | ai mano, não estamos aqui para briga,estamos para ensinar e aprender se uma função de qualquer um não funciona, alquem sempre vai explicar ou ter uma melhor! mais para quem só sabe reclamar mando um parabens!
a para quem sempre se esforça, querendo ajudar, mesmo estando errado mando mais do que um parabens, espero que essas pessoas que ajudam se dem bem na vida!
Deivdy Souza
Programador em delphi | [ Comentários não permitidos para usuários anônimos. Por gentileza, registre-se ou conecte-se ao sistema
|
|
Edição 112 |
|
|
50 Programas Fontes |
|
|
Produtos |
|
|