حساب أيام العمل حتى تاريخ محدد دون العطلات ونهايات الأسبوع
من الجمعة 3 يوليو إلى الجمعة 10 يوليو 2026 تبقى 4 أيام عمل إذا كان الاثنين 6 يوليو عطلة. أدخل تاريخ البداية والتاريخ المستهدف وأيام الإغلاق الخاصة بك لترى أيام العمل المتبقية. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- تاريخ المرجع
- 2026-07-03
- التاريخ المستهدف
- 2026-07-10
- العطلات
- 2026-07-06, 2026-07-06, 2026-07-04
- أيام العمل
- 4
- الأيام التقويمية
- 7
- العطلات المستبعدة
- 1
تقيس هذه الحاسبة وقت العمل بين تاريخ مرجعي صريح وتاريخ مستهدف صريح. وهي تستبعد السبت والأحد، وتحذف عطلات أيام الأسبوع التي تحددونها، ولا تعتمد أبداً على تاريخ اليوم أو المنطقة الزمنية للجهاز. لا يدخل التاريخ المرجعي في العد، بينما يدخل التاريخ المستهدف. وإذا سبق الهدف المرجع، ظهرت النتيجة سالبة، ولذلك تصلح الأداة للمواعيد المقبلة والمحطات التي انقضت على السواء.
حددوا مرجعاً ثابتاً وتاريخاً مستهدفاً
يستبعد الحساب المرجع ويشمل الهدف. فإذا كان المرجع يوم الجمعة والهدف يوم الاثنين التالي، كانت النتيجة يوم عمل واحداً، وهو الاثنين. ويعيد التاريخان المتطابقان صفراً.
تمنع هذه القاعدة عد يوم مرجعي مكتمل مرة أخرى، وتناسب العد التنازلي ونقاط المراجعة والسجلات التاريخية. يجري التحقق من المدخلات من دون تصحيح صامت. ولأن التاريخين صريحان، تظل الطلبات المحفوظة قابلة لإعادة الإنتاج لاحقاً بالنتيجة نفسها.
استبعدوا أيام الإغلاق المطبقة فعلياً
لا يدخل السبت والأحد في العد أبداً. استخدموا مصفوفة holidays الاختيارية لإضافة أيام إغلاق المؤسسة أو السوق أو العقد أو المشروع بالصيغة الصارمة نفسها. لا تحمّل الأداة تقويماً وطنياً ولا تفترض منطقة، لأن القواعد تختلف وقد تتغير.
أنتم تقدمون تواريخ الإغلاق المرصودة بدقة. تزيل الحاسبة التكرارات، ولا تطرح عطلة نهاية الأسبوع مرتين، ولا تؤثر العطلة الواقعة خارج الفترة في النتيجة. وبذلك يمكن تفسير الفرق بين عد يستبعد نهايات الأسبوع وحدها والنتيجة النهائية.
وإذا كانت العطلة تُرحّل إلى يوم بديل، فأدخلوا يوم العمل الذي أُغلق فعلياً. وفي العمليات المتكررة، احتفظوا بقائمة العطلات مع إصدار السياسة التي تحكمها.
اعتمدوا حساباً تقويمياً حتمياً وفق UTC
يعمل الحل بأعداد صحيحة للسنة والشهر واليوم في التقويم الميلادي فقط. ولا ينشئ كائن Date في JavaScript، ولا يقرأ ساعة النظام أو المنطقة الزمنية، ولا يصل إلى الشبكة، ولا يستخدم العشوائية. يمنع ذلك أخطاء انتقال التوقيت الصيفي، حين قد تتعامل أساليب الطوابع الزمنية مع يوم من ثلاث وعشرين أو خمس وعشرين ساعة.
ويستخدم المتصفح الحل الخالص نفسه، مما يلائم تدقيق المواعيد وتقارير مستوى الخدمة ومواعيد الرواتب والاختبارات الثابتة.
حالات الاستخدام
متابعة موعد تسليم
قيسوا أيام العمل المتبقية من نقطة مشروع مسجلة إلى التسليم التعاقدي مع تطبيق أيام إغلاق الفريق.
إعادة إنتاج حساب مستوى الخدمة
احفظوا التاريخين والعطلات مع التذكرة لإعادة حساب النتيجة في تدقيق لاحق.
فحص موعد مالي نهائي
احسبوا أيام التشغيل حتى الإقرار أو التسوية أو الرواتب من دون انزياح سببه المنطقة الزمنية.
الأسئلة الشائعة
هل تُحمّل العطلات الرسمية تلقائياً؟
لا. حددوا تواريخ الإغلاق الدقيقة في سياستكم لكي يظل الحساب صريحاً وقابلاً لإعادة الإنتاج.
كيف تُعالج العطلات المكررة أو الواقعة في نهاية الأسبوع؟
تُزال التكرارات، ولا تُطرح عطلة نهاية الأسبوع مرة أخرى لأنها مستبعدة أصلاً.
هل تغير المنطقة الزمنية أو التوقيت الصيفي النتيجة؟
لا. يستخدم الحل حساباً ميلادياً خالصاً بدلالة UTC ولا يقرأ الوقت المحلي.
هل يُحتسب يوم البداية؟
لا. يُستبعد يوم البداية ويُحتسب التاريخ المستهدف، لأن السؤال هو كم يبقى من العمل بعد يوم معروف. من الجمعة إلى الاثنين التالي تكون النتيجة 1، والتاريخان المتطابقان يعطيان 0.
ماذا لو كان التاريخ المستهدف قد مضى؟
تحصل على عدد سالب من أيام العمل. وتبديل التاريخين يغيّر الإشارة فقط، فيصف الحساب نفسه المواعيد القادمة والمراحل التي انقضت.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/date/business-days-until-date \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"reference_date":"2026-07-03","target_date":"2026-07-10"}'const res = await fetch("https://api.kit.forhosting.com/date/business-days-until-date", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"reference_date": "2026-07-03",
"target_date": "2026-07-10"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/business-days-until-date",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"reference_date": "2026-07-03",
"target_date": "2026-07-10"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/business-days-until-date", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"reference_date":"2026-07-03","target_date":"2026-07-10"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"reference_date":"2026-07-03","target_date":"2026-07-10"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/business-days-until-date", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"reference_date": "2026-07-03",
"target_date": "2026-07-10"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.business_days_until_date",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_holidays | 10000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
حددوا مرجعاً ثابتاً وتاريخاً مستهدفاً
أرسلوا reference_date وtarget_date كتاريخين كاملين بالصيغة الصارمة YYYY-MM-DD. إذا سبق الهدف المرجع، تصبح business_days وcalendar_days سالبتين؛ وعند تبديل الطرفين تتغير الإشارة فقط. وتؤدي الصيغ المحلية والطوابع الزمنية والأصفار الناقصة والتواريخ المستحيلة إلى invalid_input.
استبعدوا أيام الإغلاق المطبقة فعلياً
يعرض excluded_holidays عدد التواريخ الفريدة التي حذفت بالفعل يوم أسبوع كان سيُحسب.
اعتمدوا حساباً تقويمياً حتمياً وفق UTC
تعيد المدخلات نفسها JSON نفسه في أي بلد أو بيئة. تمثل business_days النتيجة الأساسية ذات الإشارة، وتتحقق calendar_days من المدة بعد المرجع حتى الهدف، وتوثق excluded_holidays الاستبعادات. يُحسب التنفيذ عنصراً واحداً، وتبلغ كلفة طلب API مقدار $0.002.
أسئلة تقنية
هل يدخل التاريخ المرجعي في العد؟
لا. تستبعد الفترة reference_date وتشمل target_date، وبذلك تمثل وقت العمل بعد النقطة المرجعية.
ماذا يحدث إذا سبق التاريخ المستهدف المرجع؟
تصبح business_days وcalendar_days سالبتين، مع بقاء المقدار مساوياً للفترة المعكوسة.
ما كلفة طلب API؟
يكلف حساب API الناجح $0.002. ويتاح الحل الحتمي نفسه في المتصفح أيضاً.