Fórum achar a quantidade de meses #205597
10/01/2004
0
Darrier Marques
Curtir tópico
+ 0Posts
11/01/2004
Fabio.hc
Procedure EntreDatas(DataFinal,DataInicial : TDate ; var Anos,Meses,Dias : Integer) ; // // Retorna a diferença em Dias,Meses e Anos entre 2 datas // Function Calcula(Periodo : Integer) : Integer ; var intCont : Integer ; begin intCont := 0 ; Repeat Inc(intCont) ; DataFinal := IncMonth(DataFinal,Periodo * -1) ; Until DataFinal < DataInicial ; DataFinal := IncMonth(DataFinal,Periodo) ; Inc(intCont,-1) ; Result := intCont ; End ; begin if DataFinal <= DataInicial then begin Anos := 0 ; Meses := 0 ; Dias := 0 ; exit ; end; Anos := Calcula(12) ; Meses := Calcula(1) ; Dias := Round(DataFinal - DataInicial) ; end;
Gostei + 0
11/01/2004
Crash
function MonthCount(Data1, Data2: TDate): Integer; var Dia, Mes, Ano: Word; vData: TDate; vMes1, vMes2: String; I: Integer; begin I:= 0; DecodeDate(Data1, Ano, Mes, Dia); vMes1:= IntToStr(Mes) + ´/´ + IntToStr(Ano); DecodeDate(Data2, Ano, Mes, Dia); vMes2:= IntToStr(Mes) + ´/´ + IntToStr(Ano); vData:= Data1; while vMes1 <> vMes2 do begin IncMonth(vData); DecodeDate(vData, Ano, Mes, Dia); vMes1:= IntToStr(Mes) + ´/´ + IntToStr(Ano); Inc(I); end; MonthCount:= I; end;
Gostei + 0
11/01/2004
Wolverine
var
datatotainicial,datatotafinal:string;
mesini,mesfin,mes,anoini,anofin,ano,cont,cont1,I:integer;
begin
datatotainicial:=MaskEdit1.Text; //sendo 02/02/2004
datatotafinal:=MaskEdit2.Text;
mesini:=strtoint(copy (datatotainicial,4,2));
mesfin:=strtoint(copy (datatotafinal,4,2));
anoini:=strtoint(copy (datatotainicial,7,4));
anofin:=strtoint(copy (datatotafinal,7,4));
mes:=0;
ano:=0;
// um if para saber se o funcionário ficou mais de um ano na empresa
if anoini<anofin then
begin
// este for é para contar(cont) quantos anos e adicionar 12(cont1)x quantidade(cont) em mêses
for I:=anoini to anofin do
begin
cont:=cont+1;
cont1:=cont1+12;
end;
mesini:=12-mesini;
mes:=((mesini+mesfin+cont1)-24);
end;
// este if é para saber se ele ficou até um ano
if anoini=anofin then
begin
mesini:=12-mesini;
mesfin:=12-mesfin;
mes:=(mesini-mesfin);
end;
//vc deve verificar se a dataini é maior q a datafin
//estes if´s são para fazer consistência nas datas
if anoini > anofin then
begin
ShowMessage(´A data de admissão é maior q a data de demissão!´);
Abort;
end;
if (mesini < 0) or (mesfin > 13) then
begin
ShowMessage(´Mês de admissão invalido´);
Abort;
end;
if (mesini < 0) or (mesfin > 13) then
begin
ShowMessage(´Mês de demissão invalido´);
Abort;
end;
if anoini = anofin then
if mesini < mesfin then
begin
ShowMessage(´Mês de admissão é maior que o Mês de demissão ´);
Abort;
end;
ShowMessage(IntToStr(mes));
end;
Gostei + 0
11/01/2004
Jax
Declare:
Uses
DateUtils;
procedure TForm1.Button1Click(Sender: TObject);
var
D1, D2: TDateTime;
R : Integer;
begin
D1 := StrToDate(´10/01/2001´);
D2 := StrToDate(´23/04/2001´);
R := MonthsBetween(D1, D2);
Label1.Caption := Format(´Meses entre as dusa datas: ¬d´, [R]);
end;
O calculo é feito com base no dia do mês considerando que um mês tem 30 dias.
Espero ter ajudado.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)