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