منتصف المسافة بين تاريخين
إيجاد نقطة المنتصف بين تاريخين يجيب عن سؤال مختلف عن عدّ الأيام الكاملة أو العدّ التنازلي أو حساب العمر: إنه يطلب اللحظة الوحيدة التي تقع تمامًا في منتصف المسافة بين نقطتين معروفتين على خط الزمن.
شغّل الأداة مجانًا
تقبل هذه الحاسبة لحظتين صريحتين بصيغة ISO-8601—طوابع زمنية كاملة مع Z أو إزاحة رقمية، أو تاريخًا فقط يُعامل كمنتصف ليل UTC—وتحوّلهما إلى ميلي ثوانٍ عهديّة بحساب ميلادي بحت، ثم تتوسط هذين اللحظتين بأخذ أرضية مجموع الحتمية، وتعيد التاريخ والوقت في المنتصف منسّقًا بتوقيت UTC بدقة الميلي ثانية. تشمل الفحوصات الكلاسيكية: منتصف ليل إلى منتصف ليل في يومين متتاليين يسقط عند الظهر، وفاصل ثانية واحدة يسقط عند نصف الثانية، ونهايتان متطابقتان تعيدان اللحظة نفسها. لا يستشير المحرك ساعة المضيف ولا الشبكة ولا كائن Date في المنصة، لذا تنتج المدخلات نفسها دائمًا نفس المنتصف في ودجت المتصفح المجاني وفي مسار API بسعر $0.002 لكل طلب ناجح. استخدمها لعلامات منتصف المشروع ومراكز نوافذ الفوترة وبيانات اختبار قابلة لإعادة الإنتاج في CI.
ماذا تعني نقطة منتصف اللحظات وماذا تحتوي الاستجابة
توسيط لحظتين مطلقتين هو النظير الزمني لإيجاد منتصف قطعة على خط الأعداد: إذا عرفتم بداية ونهاية اجتماع أو دراسة أو حملة أو نافذة عقد، فإن المنتصف هو لحظة UTC الوحيدة المتساوية البعد بالميلي ثانية عن الطرفين. ذلك ليس تاريخًا تقويميًا «في منتصف مارس» لمدى متعدد الأيام، ولا منتصف أيام عمل يتخطى عطلات نهاية الأسبوع، ولا متوسط ساعة حائط يفترض أن كل يوم مدني أربع وعشرون ساعة ويتجاهل الإزاحات. تقدّمون start وend كسلاسل ISO-8601؛ قد تكون كل منهما تاريخًا ووقتًا كاملين مع كسور ثوانٍ اختيارية وإزاحة Z أو ساعات ودقائق، أو قيمة تاريخ فقط YYYY-MM-DD تُعامل كمنتصف ليل UTC حتى تعمل أزواج التقويم البسيطة. تتحقق الحاسبة من وجود اليومين على التقويم الميلادي—بما في ذلك 29 فبراير في السنوات الكبيسة فقط—وتحوّل كل إدخال إلى عدّ ميلي ثوانٍ عهديّة UTC بحساب مدني استباقي، ثم تضبط midpoint_epoch_ms إلى أرضية مجموع العهدين مقسومًا على اثنين بحيث يظل مجموع الميلي ثوانٍ الفردي ينتج اختيارًا حتميًا واحدًا لنصف الميلي ثانية. تعيد الاستجابة سلسلتي start وend الأصليتين للتدقيق، وتعيد midpoint كسلسلة ISO UTC بثلاثة أرقام كسرية وZ نهائية، وتبلّغ start_epoch_ms وend_epoch_ms وmidpoint_epoch_ms لخطوط الأنابيب الرقمية، وتشمل span_ms كالمسافة المطلقة وsigned_span_ms كـ end ناقص start لرؤية الاتجاه عندما تكون اللحظة الثانية أسبق من الأولى. يعيد حقل formula القصير صياغة المتوسط لتوثيق العقد بجانب الإجابة. تُرفض الحالات التالية: غياب start أو end، سلاسل ليست ISO-8601، أشهر أو أيام مستحيلة مثل 2023-02-29، مكوّنات ساعة غير صالحة، وسنوات خارج النطاق من 1 إلى 9999. إذا احتجتم إلى عدّ أيام تقويمية أو أجزاء عدّ تنازلي أو عمرًا بالسنوات والأشهر، فاستخدموا تلك الأدوات المخصّصة؛ تجيب هذه الصفحة فقط عن اللحظة الدقيقة في منتصف المسافة بين طابعين زمنيين مُتحقَّق منهما.
كيف تُقرأ start وend وكيف يبقى المنتصف قابلاً لإعادة الإنتاج
الحقل الأول المفضّل هو start، لكن تُقبل الأسماء البديلة from وdate1 وa وbegin حتى تعيد جداول البيانات وسلاسل الاستعلام والنماذج استخدام العقد نفسه دون إعادة تسمية الأعمدة. الحقل الثاني المفضّل هو end مع الأسماء البديلة to وdate2 وb وfinish للسبب نفسه. تُقتطع كل سلسلة من الفراغات؛ وتصبح قيم التاريخ فقط منتصف ليل UTC؛ ويجوز للتواريخ والأوقات استخدام T أو مسافة بين التاريخ والوقت؛ وتُقبل كسور الثواني وتُقطع إلى ميلي ثوانٍ صحيحة قبل التوسيط حتى لا يخترع ضجيج دون الميلي ثانية منتصفًا ثانيًا. تُحوَّل الإزاحات مثل زائد صفرين ونقطتين وصفرين أو ناقص خمسة وصفرين إلى UTC بطرح دقائق الإزاحة من العهد المدني المحلي، بحيث يُوسَّط مساء نيويورك وصباح باريس اللذان يشيران إلى نفس الفترة المطلقة بشكل صحيح في UTC. داخليًا يرسم المحرك كل ثلاثي مدني إلى عدّ أيام تسلسلي بخريطة days_from_civil المعروفة، ويضرب في ستة وثمانين مليونًا وأربعمائة ألف ميلي ثانية لكل يوم، ويضيف ميلي ثوانٍ وقت اليوم، ويضبط الإزاحة—حسابًا صحيحًا بحتًا بلا Date ولا Math.random ولا شبكة. ثم يُعاد تنسيق المنتصف بالخريطة العكسية civil_from_days ليتطابق نص UTC المطبوع مع midpoint_epoch_ms تمامًا. المدخلات المتطابقة تعطي اللحظة نفسها كمنتصف؛ وعكس الزوج يترك المنتصف والمدى المطلق دون تغيير ويعكس فقط إشارة signed_span_ms. لأن كل خطوة حتمية، يتفق التشغيل المجاني في المتصفح ومسار API المدفوع بايتًا ببايت على الوحدة نفسها، وهو مثالي لبيانات CI التي تثبت 2024-01-01T12:00:00.000Z كمنتصف لمنتصفي ليل متتاليين دون إعادة تنفيذ جداول السنوات الكبيسة يدويًا.
أين يناسب حساب منتصف التاريخ والوقت في التخطيط والعلم والبرمجيات
يضع مديرو المشاريع نقاط تحقق في المنتصف عندما تُعرَّف نافذة إطلاق أو سباق قصير بطابعين زمنيين صريحين ويريد أصحاب المصلحة وقت مراجعة واحدًا في وسط النافذة بدل تسمية مبهمة لمنتصف الأسبوع. يسجّل الباحثون وأنظمة المختبرات منتصف فترة الرصد حتى تُظهر جداول الملخص لحظة تمثيلية للرسوم والربط دون اختيار البداية أو النهاية اعتباطًا. تمركز فرق المالية والعمليات نوافذ الفوترة أو الإشعار عندما تشير سياسة إلى منتصف فترة مخزّنة أصلًا كزوج من لحظات ISO في دفتر. يستدعي المطوّرون العقد من السكربتات لتوليد منتصفات حتمية للمجدولات، وللتحقق من حقول المنتصف في التقارير، أو لتلبية متطلبات منتج تفرض توسيط UTC خالصًا بلا انحراف منطقة زمنية من كائن Date على المضيف. يستخدم المعلمون وكتّاب المعايير الأداة لإظهار أن منتصف فاصل ثانية واحدة هو نصف الثانية، وأن المدخلات ذات الإزاحة تنهار إلى إجابة واحدة مُطبَّعة بـ Z. على هذه الصفحة يعمل كل شيء في متصفحكم؛ وعبر API تكلف كل استعلام ناجح $0.002، ولا تُحتسب المدخلات غير الصالحة، ولا يُخزَّن شيء بعد الاستجابة. هذا التقسيم—استكشاف تفاعلي مجاني وAPI مدفوعة مطابقة—يطابق بقية كتالوج KIT من المستوى A ويتيح الانتقال من فحص لمرة واحدة إلى خط أنابيب دون تغيير النتيجة الرياضية. اقرنوها بـ days-between أو countdown-between أو مساعدات العهد عند الحاجة إلى خطوات زمنية ذات صلة، واحتفظوا بهذه الصفحة لنية البحث عن منتصف المسافة بين تاريخين كتاريخ ووقت دقيق.
حالات الاستخدام
علامات منتصف المشروع والحملة
احسبوا وقت المراجعة الدقيق في وسط النافذة لسباق قصير أو إطلاق أو حملة تسويق معرّفة بطابعين زمنيين ISO.
منتصفات الرصد والتجربة
سجّلوا لحظة UTC تمثيلية واحدة لفترة رصد حتى لا تختار الرسوم والربط البداية أو النهاية اعتباطًا.
بيانات CI والفوترة الحتمية
ولّدوا قيم منتصف قابلة لإعادة الإنتاج لاختبارات الوحدة ومراكز الدفاتر وخطوط الأنابيب دون الاعتماد على Date أو ساعة المضيف.
الأسئلة الشائعة
كم تكلفة حاسبة منتصف المسافة بين تاريخين؟
إنها مجانية في متصفحكم على هذه الصفحة. عبر API يكلف الطلب الناجح $0.002؛ والمدخلات غير الصالحة لا تُحتسب.
كيف يُعرَّف المنتصف؟
يُحوَّل كلا المدخلين إلى ميلي ثوانٍ عهديّة UTC. midpoint_epoch_ms هو floor((start_ms + end_ms) / 2) ثم يُنسَّق كسلسلة ISO-8601 UTC بدقة الميلي ثانية.
هل تؤثر المناطق الزمنية والإزاحات على النتيجة؟
نعم، بشكل صحيح: تُحوَّل إزاحات أي إدخال إلى UTC قبل التوسيط. يُعاد المنتصف دائمًا مع Z نهائية بتوقيت UTC.
ماذا لو تطابقت اللحظتان، أو كان end قبل start؟
المدخلات المتطابقة تعيد تلك اللحظة نفسها كمنتصف. إذا كان end أسبق من start، يبقى المنتصف دون تغيير ويصبح signed_span_ms سالبًا فقط.
هل تُقبل قيم التاريخ فقط؟
نعم. تُعامل سلسلة YYYY-MM-DD كمنتصف ليل UTC لذلك اليوم المدني ثم تُوسَّط كأي لحظة أخرى.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/date/midpoint-between-dates \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"start":"2024-01-01T00:00:00Z","end":"2024-01-02T00:00:00Z"}'const res = await fetch("https://api.kit.forhosting.com/date/midpoint-between-dates", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"start": "2024-01-01T00:00:00Z",
"end": "2024-01-02T00:00:00Z"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/midpoint-between-dates",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"start": "2024-01-01T00:00:00Z",
"end": "2024-01-02T00:00:00Z"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/midpoint-between-dates", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"start":"2024-01-01T00:00:00Z","end":"2024-01-02T00:00:00Z"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"start":"2024-01-01T00:00:00Z","end":"2024-01-02T00:00:00Z"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/midpoint-between-dates", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"start": "2024-01-01T00:00:00Z",
"end": "2024-01-02T00:00:00Z"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.midpoint_between_dates",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |