iş günü hesaplama

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

iş günü hesaplama

Mesaj gönderen aslangeri »

S.A.
Bu kod ile belirtilen bir tarihe isteni diği kadar iş günü ekliyebiliyorsunuz.

Kod: Tümünü seç

const
resmitatilsayisi=5;
resmitatiller:array[1..resmitatilsayisi]of string[5]=
('01.01','23.04','19.05','30.08','29.10');
  function tatiledenkgeliyormu(tarih:tdatetime):Boolean;
  var
  i:byte;
  begin
    result:=(DayOfWeek(tarih)=1) or (DayOfWeek(tarih)=7);
    if not result then
    begin
      //resmi tatil günlerini kontrol et
      for i:=1 to resmitatilsayisi do
         result:=result or (tarih=strtodate(resmitatiller[i]+formatdatetime('.YYYY',date)));
    end;
  end;

function isgunuekle(Mdate: Tdatetime; day: integer): tdatetime;
var
i:integer;
begin
  i:=0;
  while i<day do
  begin
    mdate:=mdate+1;//bir gün ekleniyor
    if tatiledenkgeliyormu(mdate) then continue;
    inc(i);
  end;
  result:=mdate;
end;
kullanımı

Kod: Tümünü seç

dtp2.date:=isgunuekle(dtp1.date,8);
//datetimepicker2 nin tarihini datetimepicker1 den sonraki 8.işgününe ayarla
tatiledenkgeliyormu functionu şimdilik sadece hafta sonlarını ve 5 resmi tatili kontrol ediyor dini tatiller ile diğer zorunlu tatil günlerinide kontrol etmesi için ayrı bir function olarak hazırladım ama şimdilik o kontroller yok.
Kolay Gelsin.

dayofweek fonksiyonunun hftanın günlerini pazar=1 olacak şekilde döndürüyormuş. ona göre kontrolu düzelltim.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla