تقاطع الفترات
أدخل فترتين زمنيتين واحصل على الجزء المشترك بينهما: الفترة من 10:00 إلى 12:00 والفترة من 11:00 إلى 13:00 بالتوقيت العالمي تتداخلان من 11:00 إلى 12:00، أي ساعة كاملة. وإذا تلامستا فقط تكون النتيجة فارغة. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- بداية الفترة أ
- 2020-01-01T10:00:00.000Z
- نهاية الفترة أ
- 2020-01-01T12:00:00.000Z
- بداية الفترة ب
- 2020-01-01T11:00:00.000Z
- نهاية الفترة ب
- 2020-01-01T13:00:00.000Z
- بداية التقاطع
- 2020-01-01T11:00:00.000Z
- نهاية التقاطع
- 2020-01-01T12:00:00.000Z
- مدة التقاطع (مللي ثانية)
- 3,600,000
- مدة التقاطع (ساعات)
- 1
يحسب تداخل فترتين زمنيتين بصيغة ISO بترتيب صارم ومدة بالميلي ثانية والساعات. مجاني وحتمي وخاص على جهازك.
ما معنى تداخل فترتين زمنيتين
تتداخل فترتان زمنيتان عندما يوجد وقت ينتمي إلى كلتيهما. فكّر في حجزين لقاعة اجتماعات، أو في نافذتين لأعطال على لوحة الدعم الفني: السؤال ليس كم تدوم كل فترة، بل ما الجزء المشترك بينهما. والقاعدة بسيطة، إذ يبدأ الجزء المشترك عند البداية الأحدث وينتهي عند النهاية الأبكر. فإذا جاءت تلك البداية قبل تلك النهاية تمامًا فهناك تداخل، وتحصل على الجزء المشترك ومدته بالمللي ثانية وبالساعات. فمع الفترتين من 10:00 إلى 12:00 ومن 11:00 إلى 13:00 بالتوقيت العالمي يكون التداخل ساعة واحدة.
حالات حدّية تسبب الالتباس
الفترتان اللتان تتلامسان فقط، كفترة تنتهي عند 12:00 وأخرى تبدأ عند 12:00، لا تشتركان في أي وقت لأن النهاية لا تُحسب ضمن الفترة، فتكون النتيجة فارغة والمدتان صفرًا. ولا تعيد الأداة أبدًا اتحاد الفترتين، بل الجزء المشترك وحده. وكل قيمة هي توقيت كامل بصيغة ISO 8601، وتظهر النتيجة بالتوقيت العالمي. أما الفترة التي تنتهي قبل أن تبدأ أو القيمة الناقصة أو غير الصالحة فتُرفض بدل أن تُعامل كتداخل فارغ.
المدخلات والمخرجات والحالات الحدّية
الحقول الأربعة نصوص إلزامية حتى تتمكن مجسّة المخطط من بناء عينة كاملة من الأمثلة المنشورة. الفترات المتجاورة التي تلمس بعضها في نقطة واحدة فقط تنتج نتيجة فارغة لأن المقارنة أصغر بصرامة، وهذا يتوافق مع أنظمة المواعيد التي تعامل النهاية كحد حصري. النوافذ المتداخلة تعيد الشريحة المشتركة فقط لا الاتحاد.
الأنواع الخاطئة والحقول الناقصة والنطاقات المعكوسة تفشل مبكراً حتى لا يرى العملاء تداخلات فارغة صامتة.
الحتمية والحدود والدمج
التنفيذ منطق تحليل نقي بلا شبكة أو ساعة أو عشوائية سوى الطوابع التي تقدّمها، لذلك تعطي المدخلات المتطابقة دائماً المخرجات نفسها. تتشارك أداة المتصفح ومعالج الخادم الدالة النقية نفسها، فتبقى أدوات دمج التقويم ولوحات الدعم والسكربتات الآلية مستقرة بتياً. الطوابع البعيدة جداً تظل خاضعة لدقة الميلي ثانية وفق نوع Date في المنصة؛ وثّق هذا العقد عند التخزين.
حالات الاستخدام
تداخل الاجتماعات
اعثر على النافذة المشتركة بين حجزين بمدد مستقرة.
لوحات الدعم
أبرز متى تتطابق نافذتا حادث دون جداول.
الأتمتة
استدعِ الدالة النقية نفسها من سكربتات تدمج التقاويم.
الأسئلة الشائعة
هل هي مجانية؟
نعم. المستوى أ يعمل بالكامل في المتصفح دون حساب.
هل يتصل بالشبكة؟
لا. محرك التحليل يبقي كل شيء على الجهاز.
كيف يُحسب التداخل بين فترتين؟
يبدأ الجزء المشترك عند البداية الأحدث من البدايتين، وينتهي عند النهاية الأبكر من النهايتين. فإذا جاءت تلك البداية قبل تلك النهاية فهناك وقت مشترك، وإلا تكون النتيجة فارغة والمدة صفرًا.
ماذا يحدث إذا انتهت فترة في اللحظة التي تبدأ فيها الأخرى؟
تكون النتيجة فارغة. فنهاية كل فترة لا تُحسب ضمنها، كما في أغلب أنظمة الحجز، لذلك لا تشترك فترتان في أي وقت إذا تلامستا في لحظة واحدة فقط.
ماذا يحدث إذا كانت نهاية الفترة قبل بدايتها؟
تُرفض الفترة. فالقيم الناقصة أو غير الصالحة والفترات المعكوسة تتوقف عندها الأداة برسالة واضحة، فلا يمر خطأ في الكتابة على أنه تداخل فارغ.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/date/interval-intersection \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a_start":"2020-01-01T10:00:00.000Z","a_end":"2020-01-01T12:00:00.000Z","b_start":"2020-01-01T11:00:00.000Z","b_end":"2020-01-01T13:00:00.000Z"}'const res = await fetch("https://api.kit.forhosting.com/date/interval-intersection", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a_start": "2020-01-01T10:00:00.000Z",
"a_end": "2020-01-01T12:00:00.000Z",
"b_start": "2020-01-01T11:00:00.000Z",
"b_end": "2020-01-01T13:00:00.000Z"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/interval-intersection",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a_start": "2020-01-01T10:00:00.000Z",
"a_end": "2020-01-01T12:00:00.000Z",
"b_start": "2020-01-01T11:00:00.000Z",
"b_end": "2020-01-01T13:00:00.000Z"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/interval-intersection", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a_start":"2020-01-01T10:00:00.000Z","a_end":"2020-01-01T12:00:00.000Z","b_start":"2020-01-01T11:00:00.000Z","b_end":"2020-01-01T13:00:00.000Z"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a_start":"2020-01-01T10:00:00.000Z","a_end":"2020-01-01T12:00:00.000Z","b_start":"2020-01-01T11:00:00.000Z","b_end":"2020-01-01T13:00:00.000Z"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/interval-intersection", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"a_start": "2020-01-01T10:00:00.000Z",
"a_end": "2020-01-01T12:00:00.000Z",
"b_start": "2020-01-01T11:00:00.000Z",
"b_end": "2020-01-01T13:00:00.000Z"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.interval_intersection",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
كيف يعمل تقاطع الفترات
بداية التقاطع هي الأكبر بين البدايتين ونهايته هي الأصغر بين النهايتين. تُعرَّف الفترتان المدينتان أ وب بأربعة طوابع زمنية ISO-8601: a_start وa_end وb_start وb_end. يحلّل المحرك كل طرف بمحلل Date في البيئة، ويرفض القيم غير النصية أو غير القابلة للتحليل برسائل invalid_input واضحة تسمّي الحقل، ويشترط أن يكون a_start أصغر بصرامة من a_end وأن يكون b_start أصغر بصرامة من b_end. عندما تكون البداية أصغر بصرامة من النهاية تكون النتيجة غير فارغة وتحمل start وend كنصوص ISO بالتوقيت العالمي مع duration_ms وduration_hours مقربين إلى منزلة عشرية مستقرة؛ وإلا يكون empty صحيحاً وstart وend فارغين (null) وحقلا المدة صفراً.
المدخلات والمخرجات والحالات الحدّية
تغطي الأمثلة الذهبية تداخلاً لمدة ساعة وزوجاً منفصلاً فارغاً ونطاقاً أ معكوساً وحمولة غائبة تماماً حتى تبقى روابط الواجهة صادقة.
الحتمية والحدود والدمج
راجع المخطط المنشور قبل ربط المقاييس واربط فقط مفاتيح النجاح الموثقة empty وstart وend وduration_ms وduration_hours.
أسئلة تقنية
ماذا لو كان الإدخال غير صالح؟
تتلقى invalid_input مع رسالة إنجليزية واضحة.
هل النتائج مستقرة؟
نعم. الحساب الحتمي والأمثلة الذهبية تثبّت العقد.
من المؤلف؟
Aspire في ورشة KIT لدى ForHosting.