حساب فرق العقود الكاملة بين تاريخين
تقيس حاسبة الفرق بالعقود عدد الفترات التقويمية الكاملة، مدة كل منها عشر سنوات، بين تاريخين صريحين بصيغة ISO.
شغّل الأداة مجانًا
أدخل تاريخ بداية وتاريخ نهاية بالصيغة YYYY-MM-DD، فتحصل على عدد صحيح موجب إذا كان تاريخ النهاية لاحقاً، أو سالب إذا كان أسبق، أو صفر إذا لم تكتمل عشر سنوات. يعتمد الحساب قواعد ثابتة للتقويم الغريغوري وفق UTC، ولا تتأثر النتيجة بالوقت الحالي أو المنطقة الزمنية للمتصفح أو أي خدمة خارجية.
معنى العقد الكامل في هذه الحاسبة
العقد الكامل هو فترة تقويمية من عشر سنوات اكتملت انطلاقاً من التاريخ الأول، وليس مجرد مقارنة بين أسماء العقود في التقويم. فمن 15 يونيو 2000 إلى 14 يونيو 2020 اكتمل عقد واحد فقط، لأن يوماً واحداً ما زال يفصل التاريخ الثاني عن الذكرى العشرية الثانية. وفي 15 يونيو 2020 تصبح النتيجة عقدين. يمنع هذا التفريق تقريب النتيجة إلى الأعلى عند اقتراب التاريخ من الذكرى لمجرد أن رقمي السنتين يختلفان بمقدار عشرين. وقد يقع تاريخان في عقدين اسميين مختلفين ومع ذلك تكون النتيجة صفراً. صُممت النتيجة لتكون عدداً صحيحاً، ولذلك تُهمل المدة غير المكتملة بعد آخر ذكرى عشرية مكتملة. يناسب ذلك السياسات والأرشيفات والعقود وقواعد التقارير التي تتحدث عن عقود مكتملة بدلاً من مدة تقريبية. يجب أن يكون كلا المدخلين تاريخ ISO صريحاً بالصيغة YYYY-MM-DD، وبذلك يظل التفسير واضحاً وقابلاً لإعادة الإنتاج.
اتجاه الإشارة وقواعد UTC والأيام الكبيسة
تتبع الإشارة ترتيب التاريخين اللذين تقدمهما. إذا كان التاريخ الثاني لاحقاً للأول كان العدد موجباً، وإذا كان أسبق أُعيد العدد نفسه من العقود الكاملة في صورة عدد صحيح سالب. ويُرجع التاريخان المتساويان صفراً. لذلك يؤدي عكس ترتيب التاريخين إلى عكس الإشارة من دون تغيير القيمة المطلقة، وهو أمر مفيد للفرز والمقارنة والحسابات الاتجاهية. تستخدم عملية التحقق والحساب قواعد التقويم الغريغوري الاستباقي، ولا تستعمل كائن Date في JavaScript. ولا يدخل في الحساب تحويل المنطقة الزمنية المحلية أو الانتقال إلى التوقيت الصيفي أو الساعة الحالية أو طلبات الشبكة أو أي محلل يعتمد الإعدادات المحلية. إذا كان تاريخ البداية 29 فبراير، عُدّت ذكراه في السنة المستهدفة غير الكبيسة يوم 28 فبراير. يوفر هذا الضبط الصريح نتيجة ثابتة عند حدود السنوات الكبيسة ويتفق مع الحساب المعتاد للمدد التقويمية. تُقبل السنوات من 0001 إلى 9999.
كيفية استخدام النتيجة بصورة صحيحة
أرسل تاريخ ISO الابتدائي في الحقل from، وتاريخ ISO النهائي في الحقل to. تكرر الاستجابة المدخلين بعد التحقق منهما، وتقدم عدد العقود بإشارته، وتصف الاتجاه بأنه إلى الأمام أو إلى الخلف أو صفر. استخدم العدد الصحيح مباشرة حين تحتاج إلى فترات مكتملة من عشر سنوات، مثل تصنيف البرامج طويلة الأجل بحسب العقود المنقضية، أو التحقق من بلوغ عتبة ذكرى معينة، أو وصف المسافة بين السجلات التاريخية. لا تعتبره تقديراً عشرياً للسنوات؛ فالنتيجة ثلاثة تعني أن ثلاثة عقود تقويمية كاملة قد انقضت، ولا تعني بالضرورة أن التاريخين يفصل بينهما ثلاثون عاماً بالضبط من دون أشهر أو أيام متبقية. كذلك لا تستنتج هذه الإمكانية التواريخ من عبارات اللغة الطبيعية أو التنسيقات الإقليمية أو الطوابع الزمنية أو اللحظة الحالية. هذه القيود مقصودة لأنها تجعل طلبات API المتكررة حتمية. تبلغ تكلفة الطلب عبر API مقدار $0.002، بينما تنفذ نسخة المتصفح الحساب النقي نفسه لتقديم نتيجة مطابقة.
حالات الاستخدام
التحقق من ذكرى طويلة الأجل
تحقق مما إذا كان مشروع أو مؤسسة أو اتفاق أو مجموعة قد أتم عدداً محدداً من الذكريات العشرية.
مقارنة السجلات التاريخية
احصل على فرق عقود ثابت وموقّع بين تاريخين أرشيفيين من دون الاعتماد على منطقة الحاسوب الزمنية أو الساعة الحالية.
إنشاء قواعد تقارير حتمية
صنّف السجلات بحسب العقود التقويمية المكتملة مع تطبيق سلوك الحدود نفسه في المتصفح ومسارات API.
الأسئلة الشائعة
ما معنى الإشارة؟
يعني العدد الموجب أن 'to' لاحق لعنصر 'from'، ويعني العدد السالب أنه أسبق، أما الصفر فيعني عدم وجود عقد كامل بينهما.
هل تقرّب الحاسبة أجزاء العقود؟
لا. فهي تحسب ذكريات السنوات العشر المكتملة فقط، وتهمل أي مدة متبقية لم تكتمل.
ما تنسيق التاريخ المقبول؟
يجب أن تكون القيمتان تاريخي ISO صريحين بالصيغة YYYY-MM-DD، وأن تقع السنة بين 0001 و9999.
كيف يُعامل يوم 29 فبراير؟
إذا حلت الذكرى العشرية في سنة غير كبيسة، يُضبط 29 فبراير إلى 28 فبراير لأغراض المقارنة.
هل تؤثر المنطقة الزمنية أو التوقيت الصيفي في النتيجة؟
لا. يستخدم الحساب عمليات تقويم غريغورية حتمية وفق UTC، ولا يقرأ المنطقة الزمنية المحلية أبداً.
ما تكلفة طلب API؟
تبلغ تكلفة كل طلب API مقدار $0.002. ويمكن أيضاً إجراء الحساب مجاناً في المتصفح.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/date/diff-in-decades \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"from":"1985-07-25","to":"2026-07-25"}'const res = await fetch("https://api.kit.forhosting.com/date/diff-in-decades", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"from": "1985-07-25",
"to": "2026-07-25"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/diff-in-decades",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"from": "1985-07-25",
"to": "2026-07-25"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/diff-in-decades", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"from":"1985-07-25","to":"2026-07-25"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"from":"1985-07-25","to":"2026-07-25"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/diff-in-decades", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"from": "1985-07-25",
"to": "2026-07-25"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.diff_in_decades",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |