เมธอด 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