function BusinessDaysSinceFixedDate (const nDate : tDateTime) : integer;
const
Map : array [ -6 .. 6 ] of integer
= ( 0, 0, 1, 2, 3, 4, 5, 5, 5, 6, 7, 8, 9);
var
X : integer;
begin
X := trunc (nDate);
Result := 5 * (X div 7) + Map [ X mod 7 ];
end;
function BusinessDaysBetweenDates (const nStartDate : tDateTime;
const nEndDate : tDateTime) : integer;
begin
Result := BusinessDaysSinceFixedDate (nEndDate)
- BusinessDaysSinceFixedDate (nStartDate);
end;
rutin BusinessDaysSinceFixedDate sabit tarihten itibaren iş günü sayısını hesaplar. İlgili olmayan tarih 25 Aralık 1899 Pazartesi'dir. Sadece geçen hafta sayısını (X div 7) sayar ve bunu 5 ile çarpır. Güne göre düzeltmek için bir ofset ekler. haftanın. (X mod 7) negatif tarih için negatif bir değer döndürür Not, 30 Aralık önce, yani, bir tarih, 1899
sadece başlangıç ve bitiş tarihi BusinessDaysSinceFixedDate aramalar ve diğer bir çıkarır rutin BusinessDaysBetweenDates.
Teşekkür ederim ... İş dönüş sürelerini önemli ölçüde etkilemeyeceklerinden tatile ihtiyacım yok ... ama hafta sonları sorun. Ben bir şans vereceğim. – Sardukar
Neredeyse aynı işlevi kullandım .. harika çalışır. Çok fazla örnek olabilir, bu yüzden birkaç tane tatil ile ilgili bir sorun varsa, genel olarak etkilemezler. – Sardukar
Bir döngü olmadan bunu yapmak güzel olurdu. –