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 ý
TimeSpanbiể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
Comparean toàn với null (nhưng TimeSpan là struct không nullable, nên không lo). - Dùng
TimeSpan.Comparekhi viết code generic hoặc reflection.