Forumda ararken iki tarih arasındaki iş günlerini hesaplayan fonksiyonu buldum.
Ben ise vereceğim tarihin tatil günü olup olmadığını hesaplamasını ve true false cinsinden döndürmesini istiyorum fakat beceremedim.
Not:Tatil günlerini array şeklinde aşağıdaki gibi ben vereceğim.
Yardımcı olursanız sevinirim.
iş günlerinin sayısını hesaplayan fonksiyon şöyle ;
Kod: Tümünü seç
Function Hesapla (Baslangic,Bitis : TDateTime;
OzelGunler:Array of TDateTime):Integer;
var
tmpTarih : TDateTime;
iTemp : Integer;
inDate : Boolean;
Begin
Result :=0;
tmpTarih:=Min(Baslangic,Bitis);
while tmpTarih<=Max(Baslangic,Bitis) do
Begin
if not (DayOfTheWeek(tmpTarih) in [6,7]) then
Begin
if Length(OzelGunler)=0 then Inc(Result)
else
Begin
inDate := False;
for iTemp := Low(OzelGunler) to High(OzelGunler) do
Begin
if tmpTarih=OzelGunler[iTemp] then
Begin
inDate:=True;
Break;
End;
End;
if not inDate then inc(Result);
End;
End;
tmpTarih := IncDay(tmpTarih,1);
End;
End;
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage
(
InttoStr
(
Hesapla(cxDateEdit1.Date,cxDateEdit2.Date,
[ StrToDate('01.01.2018'),
StrToDate('23.04.2018'),
StrToDate('01.05.2018'),
StrToDate('19.05.2018'),
StrToDate('15.07.2018'),
StrToDate('30.08.2018'),
StrToDate('29.10.2018'),
StrToDate('14.06.2018'), //ramazan bayramı arefe
StrToDate('15.06.2018'), //ramazan bayramı 1
StrToDate('16.06.2018'), //ramazan bayramı 2
StrToDate('17.06.2018'), //ramazan bayramı 3
StrToDate('20.08.2018'), //kurban bayramı arefe
StrToDate('21.08.2018'), //kurban bayramı 1
StrToDate('22.08.2018'), //kurban bayramı 2
StrToDate('23.08.2018'), //kurban bayramı 3
StrToDate('24.08.2018') //kurban bayramı 4
])
)
);
end;