Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

เมธอด TimeSpan.Compare() ใน C# : เปรียบเทียบช่วงเวลาสองช่วง

เมธอด TimeSpan.Compare() ใน C# เป็น static method ใช้เปรียบเทียบค่า TimeSpan สองค่า คืนค่าจำนวนเต็มที่บ่งบอกว่าช่วงเวลาแรก สั้นกว่า เท่ากับ หรือยาวกว่าช่วงเวลาที่สอง

รูปแบบไวยากรณ์ (Syntax)

public static int Compare(TimeSpan t1, TimeSpan t2);

ค่าที่คืนกลับ

ค่า ความหมาย
-1 t1 สั้นกว่า t2 (t1 < t2)
0 t1 เท่ากับ t2 (t1 = t2)
1 t1 ยาวกว่า t2 (t1 > t2)

ตัวอย่างที่ 1: เปรียบเทียบพร้อมการบวก TimeSpan

using System;

public class Demo
{
    public static void Main()
    {
        TimeSpan span1 = new TimeSpan(-6, 25, 0);       // -6 ชม. 25 นาที
        TimeSpan span2 = new TimeSpan(1, 11, 25, 20);   // 1 วัน 11 ชม. 25 นาที 20 วินาที
        TimeSpan span3 = TimeSpan.MinValue;             // ค่าต่ำสุด
        
        TimeSpan res1 = span1.Add(span2);
        TimeSpan res2 = span2.Add(span3);
        
        Console.WriteLine("span1 + span2 = " + res1);
        Console.WriteLine("span2 + span3 = " + res2);
        Console.WriteLine("Compare(span1, span2) = " + TimeSpan.Compare(span1, span2));
    }
}

ผลลัพธ์

span1 + span2 = 1.05:50:20
span2 + span3 = -10675197.15:22:45.4775808
Compare(span1, span2) = -1

ตัวอย่างที่ 2: เปรียบเทียบช่วงเวลาลบกับบวก

using System;

public class Demo
{
    public static void Main()
    {
        TimeSpan span1 = new TimeSpan(-6, 25, 0);  // -6:25:00
        TimeSpan span2 = new TimeSpan(1, 10, 0);   // 1:10:00
        
        Console.WriteLine("Compare(span1, span2) = " + TimeSpan.Compare(span1, span2));
    }
}

ผลลัพธ์

Compare(span1, span2) = -1

สรุปและข้อสังเกต

  • TimeSpan สามารถเป็นค่าลบได้ (Negative TimeSpan)
  • Compare() เป็น static method เรียกผ่าน Type: TimeSpan.Compare(a, b)
  • Instance method t1.CompareTo(t2) ทำงานเหมือนกัน
  • Implement IComparable<TimeSpan> และ IComparable
  • ใช้สำหรับ sorting, comparison logic, conditional checks
  • TimeSpan.MinValue = -10675199.02:48:05.4775808 (ค่าต่ำสุด)
  • TimeSpan.MaxValue = 10675199.02:48:05.4775807 (ค่าสูงสุด)

ตัวอย่างการใช้งานจริง: เรียงลำดับ TimeSpan

var spans = new[]
{
    TimeSpan.FromHours(2),
    TimeSpan.FromMinutes(30),
    TimeSpan.FromDays(1),
    TimeSpan.FromSeconds(45)
};

Array.Sort(spans, (a, b) => TimeSpan.Compare(a, b));
// ผลลัพธ์: 00:00:45, 00:30:00, 02:00:00, 1.00:00:00