الأشهر بين تاريخين
أدخل تاريخين لتحصل على الأشهر الكاملة بينهما والأيام المتبقية: من 2024-01-15 إلى 2025-03-10 توجد 13 شهرًا و23 يومًا. وتُضبط نهايات الأشهر، فبعد شهر من 31 يناير يكون آخر يوم في فبراير. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- تاريخ البدء بصيغة ISO
- 2024-01-15
- تاريخ الانتهاء بصيغة ISO
- 2025-03-10
- تاريخ البدء
- 2024-01-15
- تاريخ الانتهاء
- 2025-03-10
- الأشهر
- 13
- الأيام
- 23
العقود وجداول الإيجار وعمر الرضّع بالأشهر ومحطات الاشتراكات والجداول الزمنية للمشاريع تحتاج في كثير من الأحيان إلى أكثر من مجرد عدد أيام خام: تحتاج إلى معرفة كم شهرًا تقويميًا كاملًا يسع بين تاريخين، وكم يومًا يتبقى بعد تلك الأشهر. الأشكال غير الصالحة والتواريخ المستحيلة مثل الثلاثين من فبراير تفشل بخطأ إدخال غير صالح ولا تُحتسب.
أشهر كاملة وأيام متبقية
تحتاج العقود وجداول الإيجار وأعمار الرضّع بالأشهر ومراحل الاشتراكات والجداول الزمنية للمشاريع إلى أكثر من عدد أيام مجرد، فالمطلوب هو عدد الأشهر التقويمية الكاملة بين تاريخين وعدد الأيام الباقية بعدها. تتقدم الأداة من التاريخ الأسبق شهرًا بعد شهر ما دامت لا تتجاوز التاريخ الأحدث، ثم تعدّ الباقي بالأيام. فمن 15 يناير 2024 إلى 10 مارس 2025 توجد 13 شهرًا و23 يومًا، أي 420 يومًا في المجموع. ويمكن أن يرافق التاريخ وقت، لكنه لا يدخل في الحساب.
نهايات الأشهر والاتجاه والأخطاء الشائعة
إذا بدأت المدة في نهاية شهر تُضبط النتيجة، فبعد شهر من 31 يناير يكون آخر يوم في فبراير لا يومًا في مارس. وإذا جاء تاريخ النهاية قبل البداية تبقى الأشهر والأيام موجبة، لكن الاتجاه يُوسم بأنه إلى الوراء. ومن الأخطاء الشائعة الحساب بمتوسط ثابت للشهر بدل الأشهر التقويمية الحقيقية، وترك الشهر الذي يبدأ في اليوم 31 ينزلق إلى الشهر التالي، وإدخال تواريخ مستحيلة مثل 30 فبراير، وهذه تُرفض بدل أن تنتقل بصمت إلى الشهر التالي.
اختيار تاريخَي from وto بصيغة ISO والصيغ المقبولة
أرسل حقلين نصيين باسم from وto. يجب أن تكون كل قيمة تاريخ تقويم بصيغة ISO بسنة من أربعة أرقام وشهر ويوم، مثل 2024-01-15. يمكنك أيضًا إرسال تاريخ ووقت كامل بصيغة ISO-8601 مع ساعات ودقائق وثوانٍ وكسور ثوانٍ اختيارية، وحرف Z ختامي للدلالة على UTC، أو إزاحة رقمية مثل +02:00.
عند وجود وقت، يتحقق المحرك من حقول الساعة فيرفض الساعات المستحيلة، لكن الجزء المدني سنة-شهر-يوم وحده يُستخدم في حساب الأشهر الكاملة والأيام المتبقية، وهو ما يحفظ صدق المنتج لمن يبحث عن الأشهر بين تاريخين لا عن عدّ تنازلي بالثواني. السنوات محدودة من واحد إلى 9999، والأشهر من واحد إلى اثني عشر، ويجب أن تكون الأيام موجودة في ذلك الشهر بما فيه التاسع والعشرون من فبراير في السنة الكبيسة عند الاقتضاء. أي شيء خارج تلك النطاقات هو إدخال غير صالح لا قيمة تُرحَّل بصمت إلى الشهر التالي.
حالات الاستخدام
العمر بالأشهر للرضّع وطب الأطفال
تحسب تطبيقات الصحة والأبوة كم شهرًا كاملًا وكم يومًا انقضى منذ تاريخ الميلاد دون متوسطات أشهر كسرية أو انحراف المنطقة الزمنية للمضيف.
محطات الاشتراكات والمشاريع
تقيس لوحات الفوترة والمشاريع الأقدمية أو طول المرحلة بين تاريخين ثابتين بصيغة ISO وتقلب النص باستخدام direction عندما يكون التاريخ المستهدف قد مضى.
الأسئلة الشائعة
ماذا يحدث إذا كان التاريخ غير صالح؟
صيغة ISO الخاطئة، والأيام التقويمية المستحيلة مثل 30 فبراير، والحقول الخارجة عن النطاق كلها مرفوضة ولا تُحتسب.
هل يستخدم هذا ساعة جدار الخادم أم كائن Date في JavaScript؟
لا. كلا التاريخين يأتي من سلسلتَي الإدخال لديك. يستخدم المحرك حسابًا ميلاديًا خالصًا للأشهر دون Date ولا شبكة ولا عشوائية، فالنتائج حتمية تمامًا.
كيف تُعدّ الأشهر إذا كان تاريخ البداية هو اليوم 31؟
بضبط نهاية الشهر: بعد شهر من 31 يناير يأتي آخر يوم في فبراير لا تاريخ في مارس. وتتقدم الأداة شهرًا بعد شهر بهذه الطريقة ثم تعدّ الأيام المتبقية على حدة.
ماذا لو كان تاريخ النهاية قبل تاريخ البداية؟
تحصل مع ذلك على أشهر وأيام موجبة للمدة، مع اتجاه موسوم بأنه إلى الوراء وقيم بإشارة سالبة، لتعرف أن التاريخ المستهدف قد مضى.
هل يمكنني إدخال تاريخ مع وقت؟
نعم. يُقبل التاريخ والوقت الكاملان مع Z أو إزاحة ويُتحقق من الوقت، لكن الأشهر والأيام تُحسب من تاريخ التقويم وحده، فلا يغيّر الوقت النتيجة أبدًا.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/date/months-between \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"from":"2024-01-15","to":"2025-03-10"}'const res = await fetch("https://api.kit.forhosting.com/date/months-between", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"from": "2024-01-15",
"to": "2025-03-10"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/months-between",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"from": "2024-01-15",
"to": "2025-03-10"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/months-between", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"from":"2024-01-15","to":"2025-03-10"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"from":"2024-01-15","to":"2025-03-10"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/months-between", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"from": "2024-01-15",
"to": "2025-03-10"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.months_between",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
تقبل حاسبة الأشهر بين تاريخين هذه زوجًا من تواريخ التقويم بصيغة ISO، وتتحقق من كل يوم وفق قواعد السنوات الكبيسة الميلادية بعمليات حسابية على الأعداد الصحيحة وحدها، وتقدّم التاريخ الأقدم شهرًا بشهر مع تثبيت نهاية الشهر، وتعيد نتيجة منظمة من أشهر كاملة وأيام متبقية يمكن للنماذج وجداول البيانات وواجهات API تثبيتها دون إعادة تنفيذ الحالات الحدّية للتقويم. تعمل أداة المتصفح مجانًا على جهازك؛ أما API المدفوعة مسبقًا فتتقاضى $0.002 عن كل عنصر ناجح عندما تحتاج الخوادم وSDK إلى العقد نفسه.
اختيار تاريخَي from وto بصيغة ISO والصيغ المقبولة
تُربط الأسماء البديلة start وbegin وstart_date بحقل from؛ وend وuntil وend_date وtarget بحقل to، بما يطابق التسمية الشائعة في النماذج وواجهات API. كلا الحقلين إلزاميان: حذف أيهما أو إرسال قيمة غير نصية أو تمرير مسافة بيضاء فارغة يُطلق invalid_input يذكر الجانب الناقص.
قراءة months وdays وtotal_days والحقول الموقعة وdirection
الحقلان months وdays غير سالبين دائمًا ويصفان معًا المدى المدني المطلق: months هو أكبر عدد من الأشهر الكاملة يمكن تقديمه من التاريخ الأقدم دون تجاوز التاريخ الأحدث، مع تثبيت نهاية الشهر بحيث يحل الحادي والثلاثون من يناير زائد شهر واحد في آخر يوم من فبراير. حقل days هو فرق الأيام المدنية المتبقي بعد ذلك التقديم، فقد يُبلَّغ عن مدى من منتصف يناير إلى مطلع مارس بشهر واحد وبضع عشرات من الأيام لا بعدّ أيام خالص وحده. عند النجاح، تعيد الاستجابة سلسلتَي from وto الأصليتين إضافة إلى from_date وto_date بعد التسوية بصيغة YYYY-MM-DD. حقل total_days هو الفرق المطلق بين أرقام الأيام المدنية للتاريخين، وهو مفيد عندما تحتاج أيضًا إلى عدد أيام غير مرتب. عندما تكون النهاية أسبق من البداية، يكون is_past بقيمة true وdirection بقيمة backward، ويحمل signed_months وsigned_days_remainder إشارة سالبة بينما يبقى months وdays غير سالبين للعرض. عند تطابق التاريخين يكون is_zero بقيمة true وdirection بقيمة zero وكل مقدار صفرًا. استخدم months وdays للنصوص الموجهة للبشر، وtotal_days للترتيب حسب الطول، وdirection عندما يجب أن تقول لغة المنتج متبقٍ أم متأخر.
استخدام API والتسعير وسير عمل المنتج والحدود العملية
استدعِ أداة الأشهر بين تاريخين المجانية داخل المتصفح لحاسبات الإيجار وعمر الرضيع بالأشهر وفحوص ذكرى العقود وعروض الفصول الدراسية دون تثبيت مكتبات moment أو قواعد بيانات المناطق الزمنية. أبقِ التوقعات صادقة: هذا المنتج يقيس الأشهر التقويمية الميلادية الكاملة والأيام المتبقية بين تاريخين صريحين؛ ولا يخترع «اليوم» من ساعة الخادم، ولا يتخطى عطلات نهاية الأسبوع كأشهر عمل، ولا يحمّل تقاويم العطلات الرسمية. تخضع المدخلات المصدرية لقواعد الاحتفاظ نفسها مثل عناصر parse الأخرى في KIT. أرسل جسم JSON يتضمن الحقلين النصيين الإلزاميين from وto كتواريخ ISO. استخدم API المدفوعة مسبقًا عندما يحتاج نظام فوترة أو لوحة أقدمية للموارد البشرية أو منصة عقارية أو مخطط مشاريع إلى عقد مستقر برصيد KIT بسعر $0.002 لكل عنصر ناجح؛ فإخفاقات التحقق لا تستهلك الرصيد أبدًا بعد أن يرفض المحرك الطلب. اقرن نقطة النهاية هذه بأداة عدّ تنازلي بين تاريخين عندما تحتاج أيضًا إلى ساعات وثوانٍ لمؤقت إطلاق، أو بحاسبة أيام الشهر عندما تتحقق أولًا من أطوال فبراير قبل بناء الجداول. يمكن لمؤلفي SDK تحويل months وdays مباشرة إلى ودجتين رقميتين وتشغيل تنسيق التأخر من is_past بشكل الاستجابة نفسه في كل ربط لغوي.
حالات التكامل
مدة الإيجار والعقود
تمرر أدوات العقارات والقانون تاريخَي بدء الإيجار وانتهائه بصيغة ISO، وتعرض الأشهر الكاملة والأيام المتبقية في صفحة الملخص، وتخزن total_days لترتيب العقود النشطة.
أسئلة تقنية
كيف أحصل على الأشهر بين تاريخين؟
أرسل JSON يتضمن from وto كتواريخ ISO (مثلًا from: "2024-01-15" وto: "2025-03-10"). تتضمن الاستجابة months وdays وtotal_days وسلسلة formatted.
ماذا لو كانت النهاية أسبق من البداية؟
يبقى months وdays غير سالبين للمدى المطلق، ويكون signed_months وsigned_days_remainder سالبين، وis_past بقيمة true، وdirection بقيمة backward.
هل حاسبة الأشهر بين تاريخين مجانية؟
أداة المتصفح تعمل مجانًا على جهازك. تستدعي API رصيد KIT المدفوع مسبقًا بسعر $0.002 لكل عنصر ناجح؛ إخفاقات التحقق لا تُحتسب.