Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cbpaulosergio

Subtração ANO, MES e DIA

Recommended Posts

tenho esse sisteminha abaixo de contagem de tempo de serviço e gostaria de subtrair o resultado de 30 ANOS, 00 MES E 00 DIA para ver qto tempo ainda falta para a pessoa aposentar que é 30 anos exatos; Alguem pode me ajudar nessa?

 

 

 

 

procedure TForm1.BtnSomarClick(Sender: TObject);
Var
Ano, Mes, Dia, Ano1, Mes1, Dia1, Ano2, Mes2, Dia2, AnoA, MesA,
DiaA, TotalB, TotalA, AnoT, MesT, DiaT : Word;
Data1, Data2 :TDateTime;
Resultado : String;

begin
If DateTimePicker1.Date < DateTimePicker2.Date then
begin
Data1 := DateTimePicker1.Date;
Data2 := DateTimePicker2.Date;
end
else
begin
Data1 := DateTimePicker2.Date;
Data2 := DateTimePicker1.Date;
Resultado := 'Falta ';
end;
DecodeDate(Data1, Ano1, Mes1, Dia1);
DecodeDate(Data2, Ano2, Mes2, Dia2);
if Dia2 >= Dia1 Then
begin
Dia := Dia2 - Dia1;
end
else
begin
If Mes2 = 1 then
begin
Dia := Dia2 + 30 - Dia1;
Mes2 := Mes2 - 1;
Ano2 := Ano2 - 1;
end
else
begin
If Mes2 = 3 then
begin
Dia := Dia2 + 30 - Dia1;
Mes2 := Mes2 - 1;
end
else
begin
If (Mes2 = 5) or (Mes2 = 7) or (Mes2 = 10) or (Mes2 = 12) then
begin
Dia := Dia2 + 30 - Dia1;
Mes2 := Mes2 - 1;
end
else
begin
Dia := Dia2 + 30 - Dia1;
Mes2 := Mes2 - 1;
end;
end;
end;
end;
If Mes2 >= Mes1 then
begin
Mes := Mes2 - Mes1;
end
else
begin
Mes := Mes2 + 12 - Mes1;
Ano2 := Ano2 - 1;
end;
If Ano2 >= Ano1 then
begin
Ano := Ano2 - Ano1;
end
else
begin
Ano := 0;
end;
If Ano < 2 then
Resultado := Resultado + IntToStr(Ano) + ' Ano, '
else
Resultado := Resultado + IntToStr(Ano) + ' Anos, ';
If Mes < 2 then
Resultado := Resultado + IntToStr(Mes) + ' Mes, '
else
Resultado := Resultado + IntToStr(Mes) + ' Meses, ';
If Dia < 2 then
Resultado := Resultado + IntToStr(Dia) + ' Dia.'
else
Resultado := Resultado + IntToStr(Dia) + ' Dias.';


Edit1.Text := (Resultado);

//end {Foi retirado um End daqui, esse end não pode existir aqui}

// AÍ EU ADICIONEI MAIS 3 EDITS E MAIS 2 LABELS E ADICIONEI OS CODIGOS ABAIXO:

if EditAnoA1.Text <> '' then
AnoA := StrToInt(EditAnoA1.Text);
if EditAnoA2.Text <> '' then
AnoA := AnoA + StrToInt(EditAnoA2.Text);
if EditAnoA3.Text <> '' then
AnoA := AnoA + StrToInt(EditAnoA3.Text);
if EditAnoA4.Text <> '' then
AnoA := AnoA + StrToInt(EditAnoA4.Text);


if EditMesA1.Text <> '' then
MesA := StrToInt(EditMesA1.Text);
if EditMesA2.Text <> '' then
MesA := MesA + StrToInt(EditMesA2.Text);
if EditMesA3.Text <> '' then
MesA := MesA + StrToInt(EditMesA3.Text);
if EditMesA4.Text <> '' then
MesA := MesA + StrToInt(EditMesA4.Text);


if EditDiaA1.Text <> '' then
DiaA := StrToInt(EditDiaA1.Text);
if EditDiaA2.Text <> '' then
DiaA := DiaA + StrToInt(EditDiaA2.Text);
if EditDiaA3.Text <> '' then
DiaA := DiaA + StrToInt(EditDiaA3.Text);
if EditDiaA4.Text <> '' then
DiaA := DiaA + StrToInt(EditDiaA4.Text);


TotalB := (AnoA*360) + (MesA*30) + DiaA;
AnoA := TotalB div 360;
MesA := (TotalB - (AnoA*360))div 30;
DiaA := TotalB - ((AnoA*360)+(MesA*30));

//Tempo Averbado é jogado no Edit5

Edit5.Text := IntToStr(AnoA)+ ' Ano(s), ' + IntToStr(MesA) + ' Mês(s), '+ IntToStr(DiaA) + ' Dia(s) ';



totalA := (Ano*360) + (AnoA*360) + (Mes*30) + (MesA*30) + Dia + DiaA;
AnoT := TotalA div 360;
MesT := (TotalA - (AnoT*360))div 30;
DiaT := TotalA - ((Anot*360)+(MesT*30));


//Tempo Atual + Tempo Averbado = Total

Edit6.Text := IntToStr(AnoT)+ ' Ano(s), '+ IntToStr(MesT)+ ' Mês(s), ' + IntToStr(DiaT)+' Dia(s)';

end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi muito bem, você quer somar os períodos de tempo trabalhado informados em edits e depois ver quanto tempo em ano/mês falta pra chegar a 30 anos? Seria isto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi muito bem, você quer somar os períodos de tempo trabalhado informados em edits e depois ver quanto tempo em ano/mês falta pra chegar a 30 anos? Seria isto?

 

 

Isso mesmo, e tambem a data exata(em outro edit) que irá se aposentar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.