DateTimeOffset.Compare() Method in C#

The DateTimeOffset.Compare() method in C# is used to compare two DateTimeOffset objects and indicates whether the first is earlier than the second, equal to the second, or later than the second. It returns an integer value that represents the relationship between the two dates.

  • <0 − If val1 is earlier than val2
  • 0 − If val1 is the same as val2
  • >0 − If val1 is later than val2

DateTimeOffset.Compare() Return Values < 0 val1 is earlier than val2 0 val1 equals val2 > 0 val1 is later than val2 Example: -1 Example: 0 Example: 1 Comparison is done in UTC time regardless of local time zones

Syntax

Following is the syntax −

public static int Compare (DateTimeOffset val1, DateTimeOffset val2);

Parameters

  • val1 − The first DateTimeOffset object to compare
  • val2 − The second DateTimeOffset object to compare

Return Value

Returns an int that indicates the relative order of the objects being compared.

Using DateTimeOffset.Compare() with Different Dates

Example

using System;

public class Demo {
   public static void Main() {
      DateTimeOffset dateTimeOffset1 = new DateTimeOffset(2019, 09, 09, 8, 20, 10, new TimeSpan(-5, 0, 0));
      DateTimeOffset dateTimeOffset2 = new DateTimeOffset(2019, 10, 09, 8, 20, 10, new TimeSpan(-5, 0, 0));
      Console.WriteLine("DateTimeOffset1 = {0}", dateTimeOffset1);
      Console.WriteLine("DateTimeOffset2 = {0}", dateTimeOffset2);
      int res = DateTimeOffset.Compare(dateTimeOffset1, dateTimeOffset2);
      // returns <0 since DateTimeOffset1 is earlier than DateTimeOffset2
      Console.WriteLine("Comparison result: " + res);
      Console.WriteLine(res < 0 ? "First date is earlier" : res == 0 ? "Dates are equal" : "First date is later");
   }
}

The output of the above code is −

DateTimeOffset1 = 9/9/2019 8:20:10 AM -05:00
DateTimeOffset2 = 10/9/2019 8:20:10 AM -05:00
Comparison result: -1
First date is earlier

Using DateTimeOffset.Compare() with Equal Dates

Example

using System;

public class Demo {
   public static void Main() {
      DateTimeOffset dateTimeOffset1 = new DateTimeOffset(2019, 09, 09, 8, 20, 10, new TimeSpan(-5, 0, 0));
      DateTimeOffset dateTimeOffset2 = new DateTimeOffset(2019, 09, 09, 8, 20, 10, new TimeSpan(-5, 0, 0));
      Console.WriteLine("DateTimeOffset1 = {0}", dateTimeOffset1);
      Console.WriteLine("DateTimeOffset2 = {0}", dateTimeOffset2);
      int res = DateTimeOffset.Compare(dateTimeOffset1, dateTimeOffset2);
      // returns 0 since DateTimeOffset1 is equal to DateTimeOffset2
      Console.WriteLine("Comparison result: " + res);
      Console.WriteLine(res < 0 ? "First date is earlier" : res == 0 ? "Dates are equal" : "First date is later");
   }
}

The output of the above code is −

DateTimeOffset1 = 9/9/2019 8:20:10 AM -05:00
DateTimeOffset2 = 9/9/2019 8:20:10 AM -05:00
Comparison result: 0
Dates are equal

Using DateTimeOffset.Compare() with Different Time Zones

Example

using System;

public class Demo {
   public static void Main() {
      // Same UTC time but different time zones
      DateTimeOffset dateTimeOffset1 = new DateTimeOffset(2019, 09, 09, 8, 20, 10, new TimeSpan(-5, 0, 0));
      DateTimeOffset dateTimeOffset2 = new DateTimeOffset(2019, 09, 09, 13, 20, 10, new TimeSpan(0, 0, 0));
      Console.WriteLine("DateTimeOffset1 = {0}", dateTimeOffset1);
      Console.WriteLine("DateTimeOffset2 = {0}", dateTimeOffset2);
      Console.WriteLine("UTC Time1 = {0}", dateTimeOffset1.UtcDateTime);
      Console.WriteLine("UTC Time2 = {0}", dateTimeOffset2.UtcDateTime);
      int res = DateTimeOffset.Compare(dateTimeOffset1, dateTimeOffset2);
      Console.WriteLine("Comparison result: " + res);
      Console.WriteLine(res < 0 ? "First date is earlier" : res == 0 ? "Dates are equal" : "First date is later");
   }
}

The output of the above code is −

DateTimeOffset1 = 9/9/2019 8:20:10 AM -05:00
DateTimeOffset2 = 9/9/2019 1:20:10 PM +00:00
UTC Time1 = 9/9/2019 1:20:10 PM
UTC Time2 = 9/9/2019 1:20:10 PM
Comparison result: 0
Dates are equal

Conclusion

The DateTimeOffset.Compare() method provides a reliable way to compare two DateTimeOffset objects based on their UTC time equivalents. It returns negative, zero, or positive values indicating chronological order, making it ideal for sorting operations and date comparisons across different time zones.

Updated on: 2026-03-17T07:04:35+05:30

3K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements