C# में DateTimeOffset.CompareTo() मेथड वर्तमान DateTimeOffset ऑब्जेक्ट की तुलना निर्दिष्ट DateTimeOffset ऑब्जेक्ट से करता है और इंगित करता है कि वर्तमान ऑब्जेक्ट दूसरे से पहले, समान, या बाद में है।
वापसी मान
- < 0 - यदि यह ऑब्जेक्ट val से पहले है
- 0 - यदि यह ऑब्जेक्ट val के समान है
- > 0 - यदि यह ऑब्जेक्ट val से बाद में है
नोट: तुलना UTC समय पर आधारित है, ऑफसेट पर नहीं।
सिंटैक्स
public int CompareTo (DateTimeOffset val);
पैरामीटर val तुलना के लिए ऑब्जेक्ट है।
उदाहरण 1: समान DateTimeOffset
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 = dateTimeOffset1.CompareTo(dateTimeOffset2);
// 0 लौटाता है क्योंकि offset1, offset2 के समान है
Console.WriteLine(res);
}
}
आउटपुट
DateTimeOffset1 = 9/9/2019 8:20:10 AM -05:00 DateTimeOffset2 = 9/9/2019 8:20:10 AM -05:00 0
उदाहरण 2: बाद की तिथि
using System;
public class Demo
{
public static void Main()
{
DateTimeOffset dateTimeOffset1 = new DateTimeOffset(2019, 11, 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 = dateTimeOffset1.CompareTo(dateTimeOffset2);
// >0 लौटाता है क्योंकि DateTimeOffset1, DateTimeOffset2 से बाद में है
Console.WriteLine(res);
}
}
आउटपुट
DateTimeOffset1 = 11/9/2019 8:20:10 AM -05:00 DateTimeOffset2 = 9/9/2019 8:20:10 AM -05:00 1
उदाहरण 3: समान UTC समय, अलग ऑफसेट (महत्वपूर्ण!)
using System;
public class Demo
{
public static void Main()
{
// समान क्षण, अलग ऑफसेट
DateTimeOffset dto1 = new DateTimeOffset(2023, 1, 1, 12, 0, 0, TimeSpan.Zero); // UTC
DateTimeOffset dto2 = new DateTimeOffset(2023, 1, 1, 17, 30, 0, new TimeSpan(5, 30, 0)); // IST
Console.WriteLine("dto1 (UTC): " + dto1);
Console.WriteLine("dto2 (IST): " + dto2);
Console.WriteLine("CompareTo: " + dto1.CompareTo(dto2)); // 0 (समान UTC क्षण!)
Console.WriteLine("EqualsExact: " + dto1.EqualsExact(dto2)); // False (अलग ऑफसेट)
}
}
आउटपुट
dto1 (UTC): 1/1/2023 12:00:00 PM +00:00 dto2 (IST): 1/1/2023 5:30:00 PM +05:30 CompareTo: 0 EqualsExact: False
CompareTo बनाम Equals/EqualsExact
| मेथड | तुलना आधार | वापसी प्रकार | उपयोग |
|---|---|---|---|
| CompareTo() | UTC समय (क्रम) | int (-1, 0, 1) | सॉर्टिंग, क्रम जांच |
| Equals() | UTC समय (समानता) | bool | समान क्षण जांच |
| EqualsExact() | UTC समय + ऑफसेट | bool | सटीक प्रतिनिधित्व जांच |
मुख्य बिंदु
- IComparable<DateTimeOffset> इंटरफेस लागू करता है
- तुलना केवल UTC समय पर आधारित है - ऑफसेट अनदेखा किया जाता है
- समान UTC क्षण वाले अलग-अलग ऑफसेट के DateTimeOffset समान माने जाते हैं (CompareTo = 0)
- null के लिए ArgumentException फेंकता है
- सरणी/सूची सॉर्टिंग के लिए सीधे उपयोगी:
list.Sort()याArray.Sort()