الحساب على التواريخ
أضف التواريخ واطرحها وقارن بينها
الحساب على التواريخ درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 4 دروس في المجموع.
إجراء العمليات الحسابية على التواريخ
قيم DateTime غير قابلة للتغيير؛ فالعمليات الحسابية لا تغيّر القيمة الأصلية مطلقًا. وبدلًا من ذلك، تعيد كل عملية قيمة DateTime جديدة تمامًا.
يتناول هذا الدرس إضافة الوقت وطرحه، ومقارنة التواريخ، والإجابة عن أسئلة مثل عدد الأيام المتبقية حتى وقوع حدث.
AddDays
تعيد الدالة AddDays تاريخًا يقع بعدد الأيام المحدد في المستقبل. مرّر عددًا سالبًا للرجوع إلى تاريخ سابق.
بما أن DateTime غير قابل للتغيير، يجب استخدام القيمة المُعادة؛ إذ تظل القيمة الأصلية دون تغيير.
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5);
DateTime later = d.AddDays(10);
Console.WriteLine(later.ToString("yyyy-MM-dd"));
}
}مجموعة دوال Add
توجد دالة Add لكل وحدة زمنية: AddHours وAddMinutes وAddSeconds وAddMonths وAddYears.
تقبل جميعها أعدادًا موجبة أو سالبة، لذا تتعامل مجموعة الدوال نفسها مع التواريخ المستقبلية والماضية.
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5, 9, 0, 0);
Console.WriteLine(d.AddHours(5).Hour);
}
}تتعامل AddMonths مع تجاوز حدود الشهر
تتعامل AddMonths بذكاء مع اختلاف أطوال الأشهر. فإضافة شهر واحد إلى 31 يناير تعطي 28 أو 29 فبراير، وليس تاريخًا غير صالح.
يُغنيك ذلك عن التحقق يدويًا من عدد الأيام في كل شهر.
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 1, 31);
Console.WriteLine(d.AddMonths(1).ToString("yyyy-MM-dd"));
}
}الرجوع إلى الماضي
للانتقال إلى الماضي، مرّر وسيطًا سالبًا. تعطي AddDays(-7) التاريخ السابق بأسبوع واحد.
لا توجد دالة منفصلة لطرح الأيام؛ فالقيم السالبة تتولى ذلك بطريقة واضحة.
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5);
Console.WriteLine(d.AddDays(-7).ToString("yyyy-MM-dd"));
}
}إضافة TimeSpan
يمكنك إضافة TimeSpan مباشرةً إلى DateTime باستخدام عامل التشغيل + أو باستخدام الدالة Add.
يكون ذلك مناسبًا عندما تكون لديك مدة جاهزة وتريد إزاحة تاريخ بمقدارها.
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5, 9, 0, 0);
DateTime later = d + TimeSpan.FromHours(3);
Console.WriteLine(later.Hour);
}
}الفرق بين التواريخ
ينتج عن طرح تاريخ من تاريخ آخر كائن TimeSpan يصف الفاصل بينهما.
اقرأ TotalDays لحساب عدد الأيام بينهما، حتى إذا امتد الفاصل عبر أشهر أو سنوات.
using System;
class Program
{
static void Main()
{
DateTime start = new DateTime(2024, 1, 1);
DateTime end = new DateTime(2024, 3, 1);
Console.WriteLine((end - start).TotalDays);
}
}عدد الأيام حتى حدث
من المهام الشائعة حساب عدد الأيام حتى تاريخ مستقبلي. اطرح تاريخ اليوم من التاريخ المستهدف، ثم اقرأ TotalDays أو Days.
يساعد استخدام تواريخ ثابتة هنا في إبقاء المخرجات متوقعة أثناء التعلم.
using System;
class Program
{
static void Main()
{
DateTime today = new DateTime(2024, 3, 1);
DateTime party = new DateTime(2024, 3, 15);
Console.WriteLine((party - today).Days);
}
}مقارنة التواريخ
تُقارن قيم DateTime باستخدام < و> و==. ويكون التاريخ الأسبق أصغر من التاريخ اللاحق.
وتوجد أيضًا دوال مثل CompareTo وEquals عندما تحتاج إلى نتيجة مقارنة رسمية.
using System;
class Program
{
static void Main()
{
DateTime a = new DateTime(2024, 1, 1);
DateTime b = new DateTime(2024, 6, 1);
Console.WriteLine(a < b);
}
}السنوات الكبيسة وأيام الشهر
تجيب دالتان مساعدتان ثابتتان عن أسئلة متعلقة بالتقويم. تعيد DateTime.IsLeapYear(year) القيمة true للسنوات الكبيسة.
توضح DateTime.DaysInMonth(year, month) عدد الأيام في شهر معين، مع التعامل الصحيح مع فبراير.
using System;
class Program
{
static void Main()
{
Console.WriteLine(DateTime.IsLeapYear(2024));
Console.WriteLine(DateTime.DaysInMonth(2024, 2));
}
}بداية اليوم ونهايته
للحصول على بداية اليوم، استخدم الخاصية Date التي تزيل الوقت وتضبطه على منتصف الليل.
للحصول على آخر لحظة في اليوم، أضف يومًا واحدًا ثم اطرح tick واحدًا، أو أضف 23:59:59. وتظل الخاصية Date أبسط لبنة أساسية لذلك.
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5, 14, 30, 0);
Console.WriteLine(d.Date.ToString("yyyy-MM-dd HH:mm"));
}
}اختبار سريع
تبدأ بالتاريخ 31 يناير 2024 وتستدعي AddMonths(1). ما التاريخ الذي تحصل عليه؟
مراجعة
تعيد العمليات الحسابية على DateTime قيمًا جديدة. أزح التواريخ باستخدام AddDays وAddMonths وما شابهما، واستخدم القيم السالبة للرجوع إلى الماضي.
اطرح التواريخ للحصول على TimeSpan، وقارن باستخدام العوامل، واستخدم IsLeapYear وDaysInMonth وDate لتنفيذ مهام التقويم.
الأسئلة الشائعة
هل درس «الحساب على التواريخ» مجاني؟
نعم — نص درس «الحساب على التواريخ» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 4 دروس في المجموع.
ماذا ستتعلم في «الحساب على التواريخ»؟
أضف التواريخ واطرحها وقارن بينها تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟
لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «الحساب على التواريخ»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟
نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- إنشاء DateTimes
- تنسيق التواريخ
- TimeSpan والمدد
- الحساب على التواريخ