[ reikonija @ 27.05.2013. 19:42 ] @
Nasao sam funkciju na elitesecurity koja racuna razliku izmedju dva datuma: Code: procedure DMYBetween(ANow, AThen: TDate; var Days, Months, Years: Integer); begin Years := YearsBetween(ANow, AThen); AThen := IncYear(AThen, Years); Months := MonthsBetween(ANow, AThen); AThen := IncMonth(AThen, Months); Days := DaysBetween(ANow, AThen); end; procedure TForm1.sButton2Click(Sender: TObject); var d,m,g,Days,Months,Years: integer; ANow, AThen : TDate; begin memo1.Clear; d:= 0;//radni staz donet (broj dana) m:= 0;//radni staz donet (broj meseci) g:= 0;//radni staz donet (broj godina) ANow:= StrToDate(sedit3.Text);//postavka datuma AThen:= StrToDate(sedit1.Text);//postavka datuma DMYBetween(ANow, AThen, Days, Months, Years); AThen := IncYear(IncMonth(IncDay(ANow, -Days-d), -Months-m), -Years-g); DMYBetween(ANow, AThen, Days, Months, Years); memo1.Lines.Append('Od poèetka do danas ima: ' + IntToStr(Days) + ' dana; ' + IntToStr(Months) + ' meseci; ' + IntToStr(Years) + ' godina;'); Funkcija racuna npr vreme od 1.1.2010 do 1.1.2012 , ali pokusavam je prepraviti da radi sledeci zadatak: Pocetak vremena : 1.1.2010 Kraj vremena : 1.1.2012 Dodatni period : od 1.1.2000 do 1.1.2013 Kada funkcija izracuna vreme izmedju "Pocetak vremena" i "Kraj vremena" rezultat ce biti "31 dana; 11 meseci; 1 godina;" ,a za dodatni period ce biti "0 dana; 0 meseci; 3 godina;" Kako da na iznos za pocetak i kraj vremena dodam dodatni period a da ne dobijem npr "64 dana , 44 mjeseca itd..." u rezultatu. Najlakse bi bilo na kraj vremena dodati dodatni period i izracunati koji je to datum pa racunati period izmedju pocetka vremena i tog novog datuma. Ako mi neko moze pomoci bio bih zahvalan. UPDATE : Nasao sam resenje. [Ovu poruku je menjao reikonija dana 28.05.2013. u 00:31 GMT+1] |