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