Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Phương thức TimeSpan.Compare() trong C#

Phương thức TimeSpan.Compare() trong C# được dùng để so sánh hai giá trị TimeSpan và trả về số nguyên chỉ ra khoảng thời gian đầu tiên ngắn hơn, bằng, hay dài hơn khoảng thời gian thứ hai.

Cú pháp

public static int Compare(TimeSpan t1, TimeSpan t2);
  • t1: Khoảng thời gian thứ nhất.
  • t2: Khoảng thời gian thứ hai.

Giá trị trả về

Kết quả Ý nghĩa
-1 t1 ngắn hơn t2 (t1 < t2)
0 t1 bằng t2
1 t1 dài hơn t2 (t1 > t2)

Ví dụ 1: So sánh TimeSpan âm và dương

using System;

public class Demo
{
    public static void Main()
    {
        TimeSpan span1 = new TimeSpan(-6, 25, 0);      // -6 giờ 25 phút
        TimeSpan span2 = new TimeSpan(1, 11, 25, 20);  // 1 ngày 11 giờ 25 phút 20 giây
        TimeSpan span3 = TimeSpan.MinValue;             // Giá trị nhỏ nhất

        TimeSpan res1 = span1.Add(span2);
        TimeSpan res2 = span2.Add(span3);

        Console.WriteLine("Kết quả (span1 + span2) = " + res1);
        Console.WriteLine("Kết quả (span2 + span3) = " + res2);
        Console.WriteLine("So sánh span1 vs span2 = " + TimeSpan.Compare(span1, span2));
    }
}

Kết quả

Kết quả (span1 + span2) = 1.05:50:20
Kết quả (span2 + span3) = -10675197.15:22:45.4775808
So sánh span1 vs span2 = -1

Ví dụ 2: So sánh hai TimeSpan âm/dương đơn giản

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 ngày 10:00:00

        Console.WriteLine("So sánh span1 vs span2 = " + TimeSpan.Compare(span1, span2));
    }
}

Kết quả

So sánh span1 vs span2 = -1

Các phương thức liên quan

  • TimeSpan.CompareTo(TimeSpan): Instance method, tương tự Compare static.
  • TimeSpan.Equals(TimeSpan): Kiểm tra bằng nhau (bool).
  • TimeSpan.Duration(): Trả về giá trị tuyệt đối (bỏ dấu âm).
  • TimeSpan.Negate(): Đảo dấu.

So sánh với toán tử

TimeSpan a = TimeSpan.FromHours(2);
TimeSpan b = TimeSpan.FromHours(3);

// Toán tử (cần C# 7.3+ cho struct)
bool less = a < b;        // true
bool greater = a > b;     // false
bool equal = a == b;      // false

// Static Compare
int cmp = TimeSpan.Compare(a, b); // -1

Lưu ý

  • TimeSpan biểu diễn khoảng thời gian (duration), không phải thời điểm (datetime). Có thể âm.
  • So sánh dựa trên tổng số ticks (1 tick = 100 nanosecond).
  • Static method Compare an toàn với null (nhưng TimeSpan là struct không nullable, nên không lo).
  • Dùng TimeSpan.Compare khi viết code generic hoặc reflection.