NETWORKDAYS () "Başlangıç_tarihi ve bitiş_tarihi arasındaki tam çalışma günü sayısını döndürür. Çalışma günleri hafta sonlarını ve tatilleri belirlenen herhangi bir tarih hariç. Kullanım NETWORKDAYS belirli bir dönem boyunca çalışılan gün sayısına göre tahakkuk çalışan faydaları hesaplamak için." Excel 2007 Yardım dosyasına göre.
"Arasındaki" o başlangıç ve bitiş tarihlerini, yani NETWORKDAYS (21-01-2010. 22-01-2010) = 2 içerdiğinden açıklama biraz yanlış olur. Ayrıca kez hiçbir hesap alır.
Burada aynı sonuçları verecektir PHP bir fonksiyon. Bu bitiş tarihi başlangıç tarihinden daha az ise düzgün çalışmıyor, ne de (fonksiyonu aşağıya bakınız) tatilleriyle ilgili bir şey yapar.
function networkdays($startdate, $enddate)
{
$start_array = getdate(strtotime($startdate));
$end_array = getdate(strtotime($enddate));
// Make appropriate Sundays
$start_sunday = mktime(0, 0, 0, $start_array[mon], $start_array[mday]+(7-$start_array[wday]),$start_array[year]);
$end_sunday = mktime(0, 0, 0, $end_array[mon], $end_array[mday]- $end_array[wday],$end_array[year]);
// Calculate days in the whole weeks
$week_diff = $end_sunday - $start_sunday;
$number_of_weeks = round($week_diff /604800); // 60 seconds * 60 minutes * 24 hours * 7 days = 1 week in seconds
$days_in_whole_weeks = $number_of_weeks * 5;
//Calculate extra days at start and end
//[wday] is 0 (Sunday) to 7 (Saturday)
$days_at_start = 6 - $start_array[wday];
$days_at_end = $end_array[wday];
$total_days = $days_in_whole_weeks + $days_at_start + $days_at_end;
return $total_days;
}
Dikkate tatil almak için, bu fonksiyonu kullanarak gün sayısını çalışmak olurdu, o zaman böyle bir sorgu kullanmak
Select count (holiday_date) from holidays
where holiday_date between start_date and end_date
and DAYOFWEEK(holiday_date) not in (1,7)
End_date 00:00 (sabah yani ilk şey) olarak değerlendirilir ile ilgili bir sorun olmadığını dikkatli olun - bunu düzgün çalıştığını böylece 23:59:59 olması koşulu var olabilir. Bu, tüm tatil saklanır nasıl bağlıdır.
Aynı dönemde tatil dönmek ve numaradan önce düşündüm ki çıkarma.