ToolDeck

حاسبة التاريخ

احسب الفرق بين تاريخين بالسنوات والأشهر والأيام والمزيد

ما هو حساب التاريخ؟

حساب التاريخ هو عملية إيجاد الفرق بين تاريخين في التقويم، أو إضافة مدة معينة إلى تاريخ محدد وطرحها منه. تتيح لك حاسبة التاريخ الإلكترونية تحديد العدد الدقيق للأيام والأسابيع والأشهر والسنوات بين أي تاريخين دون الحاجة إلى العدّ اليدوي. يظهر ذلك في تخطيط المشاريع وقانون العقود والمحاسبة المالية وتطوير البرمجيات.

يأتي تعقيد حساب التاريخ من البنية غير المنتظمة للتقويم الغريغوري. فالأشهر تحتوي على 28 أو 29 أو 30 أو 31 يوماً، والسنوات تحتوي على 365 أو 366 يوماً وفقاً لقواعد السنة الكبيسة. ويُنتج الطرح المباشر لأرقام الأيام نتائج خاطئة حين تمتد التواريخ عبر أشهر أو سنوات مختلفة. لذلك يجب أن تأخذ خوارزميات الفرق بين التواريخ الصحيحة هذه الحالات الاستثنائية بعين الاعتبار بمعالجة كل وحدة تقويمية على حدة.

تظهر العمليات الحسابية للتواريخ في سياقات برمجية عديدة: حساب انتهاء صلاحية التوكن، وجدولة الأحداث المتكررة، وحساب مواعيد نهاية SLA، أو قياس الوقت المنقضي بين إدخالات السجل. في سير عمل DevOps تبرز في نوافذ صلاحية الشهادات، ومدد تجميد النشر، وأطوال مناوبات الاستجابة. ورغم أن معظم لغات البرمجة توفر مكتبات للتعامل مع التواريخ، فإن حاسبة المتصفح تمنحك إجابات فورية للفحوصات السريعة دون الحاجة إلى كتابة كود أو تثبيت تبعيات أو فتح REPL.

لماذا تستخدم هذه الحاسبة؟

احصل على تفصيل فوري للوقت بين أي تاريخين، مع عرض النتائج في وحدات متعددة في آنٍ واحد. بلا صيغ ولا كود ولا حاجة لإنشاء حساب.

نتائج فورية
اختر تاريخين واطّلع على الفرق بالسنوات والأشهر والأسابيع والأيام والساعات والدقائق. تتحدث النتائج فور تغيير أي من التاريخين.
🔒
الخصوصية أولاً
تُجرى جميع العمليات الحسابية في متصفحك. لا تُرسَل أي تواريخ إلى أي خادم، ولا يُخزَّن أو يُسجَّل أي شيء.
📅
نتائج بوحدات متعددة
اطّلع على النتيجة في جميع الوحدات في وقتٍ واحد: إجمالي الأيام والأسابيع والأشهر، وتفصيل كامل بالسنوات والأشهر والأيام. لا داعي للتحويل بين الوحدات بنفسك.
🔢
لا يلزم إنشاء حساب
استخدم الأداة فوراً. لا يوجد تسجيل دخول ولا اشتراك ولا حد للاستخدام. احفظها في المفضلة واستخدمها متى احتجت فحصاً سريعاً للتاريخ.

حالات استخدام حاسبة التاريخ

تطوير الواجهات الأمامية
تحقق من عدد الأيام حتى تاريخ إطلاق ميزة معينة، أو تحقق من منطق عداد التنازل، أو اختبر مكونات منتقي التاريخ مقابل الفترات المتوقعة.
هندسة الخادم
تحقق من صلاحية نوافذ انتهاء التوكن، أو احسب مدد TTL للذاكرة المؤقتة، أو تحقق من أن فترات المهام المجدولة تُنتج تواريخ التشغيل التالية الصحيحة.
DevOps والموثوقية
احسب المدة بين توقيتات الحوادث في تقارير ما بعد الحادثة، أو احسب مدد انتهاء صلاحية الشهادات، أو حدد مدد تجميد النشر خلال فترات العطل.
ضمان الجودة والاختبار
أنشئ بيانات اختبار بفروق زمنية محددة، أو تحقق من منطق التحقق من السن بحساب الأعمار الدقيقة من تواريخ الميلاد، أو تأكد من معالجة شروط حدود التاريخ بشكل صحيح.
إدارة المشاريع
احسب مدد السبرينت، أو قِس عدد أيام العمل بين المعالم، أو قدّر جداول التسليم بعدّ أيام التقويم من تاريخ البداية.
الطلاب والتعلم
عدّ الأيام حتى الامتحان، أو احسب طول الفصل الدراسي، أو تحقق من إجابات الواجبات المتعلقة بحسابات التاريخ في مقررات علوم الحاسب.

مرجع وحدات مدة التاريخ

تشمل حسابات الفرق بين التواريخ وحدات ذات أطوال متفاوتة. الأشهر والسنوات ليست مدداً ثابتة، وهذا هو السبب في أن قسمة إجمالي الأيام بسيطة قد تُنتج نتائج غير دقيقة. يسرد الجدول أدناه كل وحدة ونطاقها:

الوحدةما يعادلهاملاحظة
1 year365 or 366 daysDepends on leap year
1 month28–31 daysVaries by month
1 week7 daysFixed
1 day24 hoursFixed (ignoring DST transitions)
1 hour3,600 secondsFixed
1 minute60 secondsFixed

تنسيقات التاريخ الشائعة

عند التعامل مع التواريخ برمجياً، يحدد التنسيق كيفية تحليل سلسلة التاريخ. استخدام تنسيق خاطئ يسبب أخطاء صامتة. ISO 8601 هو الخيار الأكثر أماناً لتبادل البيانات لأنه لا لبس فيه ويدعم المناطق الزمنية. يسرد الجدول أدناه التنسيقات الأكثر احتمالاً لمواجهتها:

التنسيقمثاليُستخدم في
ISO 86012026-04-10T14:30:00ZAPIs, databases, logs
RFC 2822Fri, 10 Apr 2026 14:30:00 +0000Email headers, HTTP
Unix timestamp1775831400Epoch-based systems
US format04/10/2026User-facing (US locale)
European format10.04.2026User-facing (EU locale)
Short ISO2026-04-10HTML date inputs, SQL DATE

أمثلة الكود: حساب الأيام بين تاريخين

أمثلة عملية لحساب الفرق بين تاريخين في JavaScript و Python و Go وسطر الأوامر. يوضح كل مقطع حساب إجمالي الأيام والتفصيل بالوحدات التقويمية حيث تدعمه اللغة.

JavaScript
// Calculate days between two dates
const start = new Date('2026-01-15')
const end = new Date('2026-04-10')
const diffMs = end.getTime() - start.getTime()
const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24))
console.log(diffDays) // → 85

// Get year, month, day breakdown
function dateDiff(a, b) {
  let years = b.getFullYear() - a.getFullYear()
  let months = b.getMonth() - a.getMonth()
  let days = b.getDate() - a.getDate()
  if (days < 0) {
    months--
    days += new Date(b.getFullYear(), b.getMonth(), 0).getDate()
  }
  if (months < 0) { years--; months += 12 }
  return { years, months, days }
}
console.log(dateDiff(start, end)) // → { years: 0, months: 2, days: 26 }
Python
from datetime import date, timedelta
from dateutil.relativedelta import relativedelta

start = date(2026, 1, 15)
end = date(2026, 4, 10)

# Total days
diff = (end - start).days
print(diff)  # → 85

# Year/month/day breakdown (requires python-dateutil)
rd = relativedelta(end, start)
print(f"{rd.years}y {rd.months}m {rd.days}d")  # → 0y 2m 26d

# Add 90 days to a date
future = start + timedelta(days=90)
print(future)  # → 2026-04-15
Go
package main

import (
	"fmt"
	"time"
)

func main() {
	start := time.Date(2026, 1, 15, 0, 0, 0, 0, time.UTC)
	end := time.Date(2026, 4, 10, 0, 0, 0, 0, time.UTC)

	// Total duration
	diff := end.Sub(start)
	days := int(diff.Hours() / 24)
	fmt.Println(days) // → 85

	// Add 90 days
	future := start.AddDate(0, 0, 90)
	fmt.Println(future.Format("2006-01-02")) // → 2026-04-15
}
CLI (GNU date / macOS)
# Days between two dates (GNU coreutils)
echo $(( ($(date -d "2026-04-10" +%s) - $(date -d "2026-01-15" +%s)) / 86400 ))
# → 85

# Add 90 days to a date (GNU date)
date -d "2026-01-15 + 90 days" +%Y-%m-%d
# → 2026-04-15

# macOS (BSD date) — add 90 days
date -j -v+90d -f "%Y-%m-%d" "2026-01-15" +%Y-%m-%d
# → 2026-04-15

الأسئلة الشائعة

كيف أحسب عدد الأيام بين تاريخين؟
اطرح التاريخ الأبكر من التاريخ الأحدث للحصول على الفرق بالمللي ثانية (أو نوع المدة الأصلي في لغتك البرمجية)، ثم اقسم على عدد المللي ثانية في اليوم (86,400,000). يعطيك هذا إجمالي الأيام المنقضية. أما لتفصيل التقويم إلى سنوات وأشهر وأيام متبقية، فعليك معالجة كل وحدة على حدة لأن الأشهر ذات أطوال متغيرة.
هل يشمل الفرق بين التاريخين تاريخ البداية أم تاريخ النهاية؟
بالاصطلاح، يحسب الفرق بين التاريخين الأيام الفاصلة بينهما باستثناء إما تاريخ البداية أو تاريخ النهاية. فإذا اخترت 1 يناير و2 يناير، تكون النتيجة يوماً واحداً. إذا كانت حالة استخدامك تتطلب العدّ الشامل (تضمين كلا الطرفين)، أضف 1 إلى النتيجة. تتبع هذه الأداة اصطلاح نهاية حصرية الذي تستخدمه معظم لغات البرمجة.
كيف تُعالَج السنوات الكبيسة في حسابات التاريخ؟
تضيف السنة الكبيسة يوم 29 فبراير، مما يجعل السنة 366 يوماً بدلاً من 365. قاعدة السنة الكبيسة الغريغورية هي: قابلة للقسمة على 4، باستثناء السنوات المئوية التي يجب أن تكون قابلة للقسمة على 400 أيضاً. فمثلاً 2024 و2028 سنتان كبيستان، و1900 لم تكن كبيسة، و2000 كانت كبيسة. تُعالج خوارزميات الفرق بين التواريخ التي تعمل بوحدات تقويمية (سنة/شهر/يوم) هذا تلقائياً. أما الخوارزميات التي تُحوّل إلى إجمالي أيام فيجب أن تأخذ اليوم الإضافي بعين الاعتبار حين يمتد النطاق عبر 29 فبراير.
ما الفرق بين أيام التقويم وأيام العمل؟
أيام التقويم تعدّ كل يوم بما فيها عطل نهاية الأسبوع والعطلات الرسمية. أيام العمل (من الإثنين إلى الجمعة) تستثني السبت والأحد والعطلات الرسمية. تحسب هذه الأداة أيام التقويم. للتحويل التقريبي إلى أيام عمل، اضرب إجمالي أيام التقويم في 5/7. للحصول على عدد دقيق لأيام العمل، تحتاج أيضاً إلى تقويم عطلات الجهة القضائية المعنية.
هل يمكنني حساب تاريخ مستقبلي بإضافة أيام إلى تاريخ بداية؟
نعم. في JavaScript، أنشئ كائن Date واستدعِ setDate(getDate() + n). في Python، أضف timedelta(days=n) إلى كائن date. في Go، استخدم time.AddDate(0, 0, n). تركز هذه الأداة على الفرق بين تاريخين معروفين، لكن يمكنك استخدامها للتحقق من حساباتك: أدخل تاريخ البداية والتاريخ المتوقع كنتيجة، وتأكد من أن إخراج إجمالي الأيام يطابق الفارق الذي أضفته.
لماذا تعطي أدوات مختلفة نتائج مختلفة للأشهر بين تاريخين؟
حساب الأشهر غامض لأن الأشهر ذات أطوال مختلفة. خذ مثلاً 31 يناير إلى 28 فبراير: هل هذا شهر واحد أم صفر أشهر و28 يوماً؟ تتخذ المكتبات المختلفة خيارات مختلفة. الاصطلاح الأكثر شيوعاً (المستخدم في dateutil الخاص بـ Python، و Period الخاص بـ Java، وهذه الأداة) يعدّ الشهر الكامل بالوصول إلى نفس رقم اليوم من الشهر أو آخر يوم صالح من الشهر الأقصر. تحقق دائماً من الاصطلاح الذي تستخدمه مكتبتك عند مقارنة النتائج.
هل يتأثر حساب التاريخ بالمناطق الزمنية؟
حين تختار تواريخ بدون مكوّن وقت (سنة-شهر-يوم فقط)، يكون الحساب مستقلاً عن المناطق الزمنية لأنه يعمل على تواريخ تقويمية لا على لحظات زمنية محددة. إذا كنت بحاجة لحساب الفرق بين لحظتين محددتين (يشملان الوقت والمنطقة الزمنية)، فعليك العمل مع طوابع ISO 8601 الكاملة وتحويل كليهما إلى UTC قبل الطرح. تعمل هذه الأداة على التواريخ التقويمية فقط.