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