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