حساب الفرق بين تاريخين مع تجاهل العطلات (الدليل الاحترافي الشامل)

حساب الفرق بين تاريخين مع تجاهل العطلات (الدليل الاحترافي الشامل)

بقلم: شيماء أسامةآخر تحديث:

حساب الفرق بين تاريخين مع تجاهل العطلات من أكثر العمليات المطلوبة في إدارة المشاريع، والموارد البشرية، والمحاسبة، وإعداد العقود. كما يُستخدم هذا النوع من الحساب داخل أنظمة تخطيط موارد المؤسسات (ERP) مثل SAP وOracle، وكذلك في أدوات إدارة المشاريع مثل Microsoft Project وAsana. فليس المطلوب دائمًا معرفة عدد الأيام التقويمية بين تاريخين، بل حساب أيام العمل الفعلية (Business Days) مع استبعاد عطلات نهاية الأسبوع والإجازات الرسمية.

في هذا الدليل الاحترافي، ستتعلم:

  • الفرق بين الأيام التقويمية وأيام العمل
  • طرق حساب عدد أيام العمل بدقة
  • كيفية تجاهل العطلات الرسمية
  • تطبيق عملي باستخدام Excel
  • حلول برمجية باستخدام JavaScript وPython
  • أخطاء شائعة يجب تجنبها
  • أفضل ممارسات احترافية
  • كيفية ربط الحساب بمؤشرات الأداء (KPIs) واتفاقيات مستوى الخدمة (SLA – Service Level Agreement)

لماذا نحتاج حساب الفرق بين تاريخين مع تجاهل العطلات؟

في الحياة العملية، الحساب العادي للأيام لا يكفي.

أمثلة واقعية:

  • حساب مدة تنفيذ مشروع (Business Days)
  • احتساب أيام التأخير الفعلية
  • تحديد مدة الضمان
  • حساب مهلة قانونية لا تشمل العطلات
  • حساب أيام استحقاق رواتب أو إجازات
  • قياس الالتزام الزمني في العقود المرتبطة بـ SLA
  • تحليل أداء الفرق التشغيلية بناءً على KPIs زمنية دقيقة

إذا كان لديك عقد يبدأ 1 يناير وينتهي 15 يناير، فالفرق 14 يومًا تقويميًا.

لكن إذا استبعدنا الجمعة والسبت والعطلات الرسمية، فقد تصبح 10 أيام عمل فقط.

وهنا تكمن الأهمية، خاصة في الأنظمة المؤسسية الكبيرة التي تعتمد على دقة المواعيد.

اقرأ ايضاً: هل يمكن حساب الفرق بين تاريخين بدون Excel؟

الفرق بين الأيام التقويمية وأيام العمل

أولاً: الأيام التقويمية (Calendar Days)

هي جميع الأيام بين تاريخين، وتشمل:

  • أيام الأسبوع
  • عطلات نهاية الأسبوع
  • الإجازات الرسمية
  • العطلات الوطنية والعالمية المعتمدة في التقويم الرسمي للدولة

المعادلة البسيطة:

التاريخ النهائي - التاريخ الابتدائي

ثانيًا: أيام العمل (Working Days)

هي الأيام التي يتم فيها العمل فعليًا، وتستبعد:

  • عطلة نهاية الأسبوع (الجمعة والسبت أو السبت والأحد حسب الدولة)
  • الإجازات الرسمية
  • أيام الإغلاق الاستثنائية التي تحددها الشركات (Company Shutdown Days)

وهنا نبدأ في الحساب الاحترافي الذي تعتمد عليه أنظمة ERP وأنظمة الموارد البشرية.

اقرأ ايضاً: كيفية حساب الفرق بين تاريخين Excel

الطريقة الاحترافية في Excel لحساب الفرق مع تجاهل العطلات

إذا كنت تستخدم Excel، فهناك دوال مخصصة لهذا الغرض.

هذه الدوال متوفرة في Microsoft Excel وكذلك في Google Sheets.

استخدام دالة NETWORKDAYS

الصيغة الأساسية:

=NETWORKDAYS(Start_Date, End_Date)

تحسب عدد أيام العمل بين تاريخين مع استبعاد السبت والأحد تلقائيًا.

إضافة قائمة العطلات الرسمية

إذا أردت استبعاد العطلات الرسمية أيضًا:

=NETWORKDAYS(Start_Date, End_Date, Holidays_Range)

مثال عملي:

  • تاريخ البداية: 1/1/2026
  • تاريخ النهاية: 15/1/2026
  • عطلة رسمية: 7/1/2026

ستقوم الدالة بخصم:

  • جميع عطلات نهاية الأسبوع
  • 7 يناير من النتيجة

يمكن تخزين قائمة العطلات في ورقة مستقلة وربطها تلقائيًا باستخدام Power Query لتحديثها سنويًا دون تدخل يدوي.

إذا كانت عطلة نهاية الأسبوع مختلفة؟

بعض الدول تعتمد الجمعة والسبت عطلة.

هنا نستخدم:

=NETWORKDAYS.INTL(Start_Date, End_Date, Weekend_Code, Holidays_Range)

مثال لعطلة الجمعة والسبت:

=NETWORKDAYS.INTL(A1, B1, 7, C1:C5)

حيث الرقم 7 يمثل الجمعة والسبت كعطلة.

الحساب بدون Excel (طريقة يدوية ذكية)

إذا لم يكن لديك Excel، يمكنك اتباع الخطوات التالية:

  1. احسب الفرق الكلي بين التاريخين.
  2. احسب عدد الأسابيع الكاملة.
  3. اضرب عدد الأسابيع × عدد أيام العطلة الأسبوعية.
  4. اطرح العطلات الرسمية يدويًا.

مثال:

من 1 يناير إلى 15 يناير = 14 يومًا

يوجد أسبوعان كاملان = 2 × 2 أيام عطلة = 4 أيام

يوجد عطلة رسمية واحدة

14 - 4 - 1 = 9 أيام عمل

اقرأ ايضاً: حساب الفرق بين تاريخين

حساب الفرق بين تاريخين مع تجاهل العطلات برمجيًا

إذا كنت تبني موقعًا أو أداة حاسبة، فهذه الطريقة مهمة، خاصة عند تطوير أنظمة سحابية أو تطبيقات مؤسسية.

باستخدام JavaScript

يمكن استخدام الدالة التالية داخل تطبيقات مبنية باستخدام React أو Node.js:

function workingDays(start, end, holidays = []) { let count = 0; let current = new Date(start); while (current <= new Date(end)) { let day = current.getDay(); let dateStr = current.toISOString().split('T')[0]; if (day !== 0 && day !== 6 && !holidays.includes(dateStr)) { count++; } current.setDate(current.getDate() + 1); } return count; }

باستخدام Python

تُستخدم هذه الطريقة في أنظمة مبنية باستخدام Django أو Flask، أو في التحليلات المالية عبر مكتبة Pandas:

import datetime def working_days(start, end, holidays=[]): delta = end - start count = 0 for i in range(delta.days + 1): day = start + datetime.timedelta(days=i) if day.weekday() < 5 and day not in holidays: count += 1 return count

هذه الخوارزمية:

  • تستبعد السبت والأحد
  • تستبعد العطلات المحددة
  • دقيقة ومرنة
  • قابلة للتكامل مع قواعد بيانات رسمية للعطلات عبر API حكومية

أخطاء شائعة يجب تجنبها

1️⃣ نسيان تحديد نوع عطلة نهاية الأسبوع

بعض الدول لا تعتمد السبت والأحد.

2️⃣ تجاهل العطلات الرسمية المتغيرة

مثل الأعياد الدينية التي تتغير كل سنة.

3️⃣ احتساب يوم البداية مرتين

انتبه إذا كنت تريد الحساب شاملًا ليوم البداية أم لا.

4️⃣ الخلط بين “مدة تنفيذ” و“مهلة قانونية”

بعض العقود تنص على أيام تقويمية، لا أيام عمل.

5️⃣ عدم مراعاة فروقات المناطق الزمنية (Time Zones) في الأنظمة الدولية

6️⃣ إهمال السنوات الكبيسة (Leap Years) عند بناء خوارزميات مخصصة

متى تستخدم كل طريقة؟

الحالة الطريقة المناسبة
حساب سريع لموظف NETWORKDAYS
نظام موارد بشرية Excel مع قائمة عطلات
موقع إلكتروني JavaScript
نظام مالي متقدم Python مع قاعدة بيانات عطلات
نظام مؤسسي كبير تكامل مباشر مع ERP أو تقويم رسمي عبر API

نصائح احترافية لتحسين الدقة

  • أنشئ قائمة عطلات رسمية سنوية جاهزة.
  • حدث العطلات المتغيرة سنويًا.
  • استخدم NETWORKDAYS.INTL للدول ذات أنظمة عطلة مختلفة.
  • اختبر النتيجة يدويًا في أول مرة.
  • وضّح دائمًا في العقود هل المقصود أيام عمل أم تقويمية.
  • قم بربط الحساب بلوحة مؤشرات (Dashboard) لقياس KPIs الزمنية تلقائيًا.

أسئلة شائعة (FAQ)

كيف أحسب عدد أيام العمل بين تاريخين؟

باستخدام دالة NETWORKDAYS في Excel أو خوارزمية تستبعد عطلات نهاية الأسبوع والعطلات الرسمية.

هل دالة DATEDIF تستبعد العطلات؟

لا، DATEDIF تحسب الفرق التقويمي فقط.

ما الفرق بين NETWORKDAYS و NETWORKDAYS.INTL؟

NETWORKDAYS.INTL تسمح بتحديد عطلة نهاية أسبوع مخصصة.

هل يمكن حساب أيام العمل بدون Excel؟

نعم، يدويًا أو باستخدام JavaScript أو Python.

هل يتم احتساب يوم البداية؟

يعتمد على الطريقة المستخدمة. غالبًا يتم احتسابه افتراضيًا في Excel.

خلاصة الدليل

حساب الفرق بين تاريخين مع تجاهل العطلات ليس مجرد عملية طرح بسيطة، بل عملية دقيقة تؤثر على قرارات مالية وقانونية وإدارية.

إذا كنت تعمل في:

  • إدارة المشاريع
  • المحاسبة
  • الموارد البشرية
  • العقود القانونية
  • تطوير الأنظمة
  • تحليل الأداء المؤسسي وقياس SLA وKPIs

فإتقان هذه المهارة ضروري لضمان الدقة وتقليل المخاطر وتحسين جودة القرارات.

🚀 الخطوة التالية

إذا كنت تعتمد على الحساب اليدوي حتى الآن، فقد حان الوقت لتطوير طريقتك:

  • أنشئ نموذج Excel احترافي جاهز بالعطلات السنوية.
  • أو قم ببرمجة أداة مخصصة لفريقك.
  • أو دمج الآلية داخل نظام ERP أو نظام إدارة المشاريع لديك.

الدقة في حساب أيام العمل تعني قرارات أفضل، ومخاطر أقل، واحترافية أعلى.

ابدأ الآن وطبّق ما تعلمته اليوم.