C# Academy · درس

TimeSpan والمدد

قِس الفترات الزمنية

الدرس 3 من 413 خطوة

TimeSpan والمدد درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 4 دروس في المجموع.

ما هو TimeSpan

بينما يمثل DateTime نقطة زمنية، يمثل TimeSpan مدة زمنية، مثل ساعتين أو 90 دقيقة.

إنه مدة غير مرتبطة بتقويم. وتستخدمه لنتائج ساعة الإيقاف، والمهل الزمنية، والفاصل بين تاريخين.

إنشاء TimeSpan

يأخذ أحد المُنشئات الساعات والدقائق والثواني: new TimeSpan(hours, minutes, seconds).

لذلك تمثل new TimeSpan(1, 30, 0) ساعةً وثلاثين دقيقة. وتُطبع القيمة بتنسيق واضح هو h:mm:ss.

using System;

class Program
{
    static void Main()
    {
        TimeSpan span = new TimeSpan(1, 30, 0);
        Console.WriteLine(span);
    }
}

دوال الإنشاء

غالبًا ما تكون القراءة أوضح عند استخدام دالة إنشاء. تنشئ TimeSpan.FromMinutes(90) مدةً قدرها 90 دقيقة.

وتوجد دوال مساعدة مماثلة: FromHours وFromSeconds وFromDays وFromMilliseconds.

using System;

class Program
{
    static void Main()
    {
        TimeSpan span = TimeSpan.FromMinutes(90);
        Console.WriteLine(span);
    }
}

القيم الإجمالية مقابل قيم المكوّنات

يحتوي TimeSpan على مجموعتين من الخصائص. تمثل Hours وMinutes وSeconds المكونات المنفصلة للمدة.

أما الإصدارات التي تبدأ بـTotal...، مثل TotalMinutes، فتعبر عن المدة كاملةً بوحدة واحدة، على هيئة عدد عشري.

using System;

class Program
{
    static void Main()
    {
        TimeSpan span = TimeSpan.FromMinutes(90);
        Console.WriteLine(span.Hours);
        Console.WriteLine(span.TotalMinutes);
    }
}

شرح الفرق بين المكوّنات والإجمالي

بالنسبة إلى 90 دقيقة، تكون قيمة Hours هي 1 وقيمة Minutes هي 30، لأن المدة تتكون من ساعة واحدة و30 دقيقة.

لكن قيمة TotalHours هي 1.5 وقيمة TotalMinutes هي 90، لأن هاتين الخاصيتين تحسبان المدة كاملةً بوحدة واحدة.

using System;

class Program
{
    static void Main()
    {
        TimeSpan span = TimeSpan.FromMinutes(90);
        Console.WriteLine(span.TotalHours);
    }
}

طرح تاريخين

عند طرح DateTime من DateTime آخر، تكون النتيجة TimeSpan.

هذه هي الطريقة المعتادة لمعرفة مقدار الوقت المنقضي بين لحظتين، مثل مدة حدث ما.

using System;

class Program
{
    static void Main()
    {
        DateTime start = new DateTime(2024, 3, 5, 9, 0, 0);
        DateTime end = new DateTime(2024, 3, 5, 11, 30, 0);
        TimeSpan diff = end - start;
        Console.WriteLine(diff.TotalHours);
    }
}

جمع قيم TimeSpan

يمكنك جمع قيم TimeSpan أو طرحها باستخدام عاملي التشغيل المعتادين + و-.

يؤدي دمج مدتين إلى مدة أطول، وهذا مفيد عند جمع عدة فواصل زمنية.

using System;

class Program
{
    static void Main()
    {
        TimeSpan a = TimeSpan.FromMinutes(45);
        TimeSpan b = TimeSpan.FromMinutes(15);
        Console.WriteLine((a + b).TotalMinutes);
    }
}

الفترات السالبة

يمكن أن تكون قيمة TimeSpan سالبة إذا كانت النهاية قبل البداية، أو بعد إجراء عملية طرح.

تعيد الدالة Duration القيمة المطلقة، بينما تعكس Negate الإشارة. وتفيد هاتان الدالتان عندما تهتم بالمقدار فقط.

using System;

class Program
{
    static void Main()
    {
        TimeSpan span = TimeSpan.FromHours(-3);
        Console.WriteLine(span.Duration().TotalHours);
    }
}

مقارنة الفترات

تُقارن قيم TimeSpan باستخدام < و> و== تمامًا مثل الأعداد.

يسمح لك ذلك بالتحقق مما إذا كانت مدة أطول من أخرى، مثلًا لفرض حد أقصى للوقت المسموح به.

using System;

class Program
{
    static void Main()
    {
        TimeSpan limit = TimeSpan.FromHours(2);
        TimeSpan used = TimeSpan.FromMinutes(150);
        Console.WriteLine(used > limit);
    }
}

الصفر والثوابت

تمثل TimeSpan.Zero عدم انقضاء أي وقت، وهي نقطة بداية مفيدة عند جمع المدد.

وتوجد أيضًا TimeSpan.MinValue وTimeSpan.MaxValue لتمثيل الحدين الأقصى والأدنى للمدة.

using System;

class Program
{
    static void Main()
    {
        TimeSpan total = TimeSpan.Zero;
        total += TimeSpan.FromMinutes(10);
        Console.WriteLine(total.TotalMinutes);
    }
}

تنسيق TimeSpan

يمكنك تنسيق TimeSpan باستخدام سلسلة مخصصة. فعلى سبيل المثال، تعرض @"hh\:mm" الساعات والدقائق.

تجعل الشرطتان المائلتان العكسيتان النقطتين حرفًا عاديًا يظهر كما هو. وللحصول على مخرجات سريعة، تكون ToString الافتراضية كافية عادةً.

using System;

class Program
{
    static void Main()
    {
        TimeSpan span = new TimeSpan(2, 5, 0);
        Console.WriteLine(span.ToString(@"hh\:mm"));
    }
}

اختبار سريع

لديك TimeSpan مدته 90 دقيقة. أي خاصية تعيد القيمة 1.5؟

مراجعة

يمثل TimeSpan مدةً زمنية. أنشئه باستخدام new TimeSpan(...) أو دوال إنشاء مثل FromMinutes.

تختلف خصائص المكونات مثل Hours عن خصائص Total.... ويؤدي طرح كائنَي DateTime إلى الحصول على TimeSpan، كما يمكنك جمع المدد ومقارنتها وتنسيقها.

البدء مجانًا

تعلم C# مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
93
الدروس
346

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

هل درس «TimeSpan والمدد» مجاني؟

نعم — نص درس «TimeSpan والمدد» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 4 دروس في المجموع.

ماذا ستتعلم في «TimeSpan والمدد»؟

قِس الفترات الزمنية تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟

لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «TimeSpan والمدد»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟

نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. إنشاء DateTimes
  2. تنسيق التواريخ
  3. TimeSpan والمدد
  4. الحساب على التواريخ
← العودة إلى C# Academy