C#-এ DateTimeOffset.CompareTo() মেথডটি বর্তমান DateTimeOffset অবজেক্টকে অন্য একটি DateTimeOffset অবজেক্টের সাথে তুলনা করে এবং তাদের আপেক্ষিক ক্রম নির্দেশ করে। তুলনা UTC টাইমলাইন-এ ভিত্তিক করে হয় (অফসেট বিবেচনা করে)।
সিনট্যাক্স (Syntax)
public int CompareTo(DateTimeOffset value);
রিটার্ন ভ্যালু (Return Value)
| মান | অর্থ |
|---|---|
| < 0 | বর্তমান অবজেক্ট value-এর চেয়ে আগে (earlier in UTC) |
| 0 | দুটি অবজেক্ট একই মুহূর্ত উপস্থাপন করে (UTC-এ সমান) |
| > 0 | বর্তমান অবজেক্ট value-এর চেয়ে পরে (later in UTC) |
উদাহরণ ১: সমান DateTimeOffset (ভিন্ন অফসেট, একই UTC)
using System;
public class Demo
{
public static void Main()
{
// একই UTC মুহূর্ত: 2019-09-09 13:20:10 UTC
DateTimeOffset dto1 = new DateTimeOffset(2019, 09, 09, 8, 20, 10, new TimeSpan(-5, 0, 0)); // UTC-5
DateTimeOffset dto2 = new DateTimeOffset(2019, 09, 09, 8, 20, 10, new TimeSpan(-5, 0, 0)); // UTC-5
Console.WriteLine("DateTimeOffset1 = {0}", dto1);
Console.WriteLine("DateTimeOffset2 = {0}", dto2);
int res = dto1.CompareTo(dto2);
// ০ ফেরত দেবে কারণ UTC-এ সমান
Console.WriteLine(res);
}
}
আউটপুট
DateTimeOffset1 = 9/9/2019 8:20:10 AM -05:00 DateTimeOffset2 = 9/9/2019 8:20:10 AM -05:00 0
উদাহরণ ২: পরবর্তী DateTimeOffset
using System;
public class Demo
{
public static void Main()
{
// ২০১৯-১১-০৯ ১৩:২০:১০ UTC (নভেম্বর)
DateTimeOffset dto1 = new DateTimeOffset(2019, 11, 09, 8, 20, 10, new TimeSpan(-5, 0, 0));
// ২০১৯-০৯-০৯ ১৩:২০:১০ UTC (সেপ্টেম্বর - আগে)
DateTimeOffset dto2 = new DateTimeOffset(2019, 09, 09, 8, 20, 10, new TimeSpan(-5, 0, 0));
Console.WriteLine("DateTimeOffset1 = {0}", dto1);
Console.WriteLine("DateTimeOffset2 = {0}", dto2);
int res = dto1.CompareTo(dto2);
// >0 ফেরত দেবে কারণ dto1 UTC-এ dto2-র পরে
Console.WriteLine(res);
}
}
আউটপুট
DateTimeOffset1 = 11/9/2019 8:20:10 AM -05:00 DateTimeOffset2 = 9/9/2019 8:20:10 AM -05:00 1
গুরুত্বপূর্ণ: UTC-ভিত্তিক তুলনা
CompareTo() সবসময় UTC-এ কনভার্ট করে তুলনা করে। অফসেট বাদ দিয়ে "কোন মুহূর্তে ঘটল" তা বিবেচনা করে।
উদাহরণ: একই লোকাল টাইম, ভিন্ন অফসেট
using System;
public class Demo
{
public static void Main()
{
// দুটি ভিন্ন টাইমজোনে একই লোকাল টাইম
DateTimeOffset ny = new DateTimeOffset(2023, 1, 1, 12, 0, 0, new TimeSpan(-5, 0, 0)); // NY: UTC-5
DateTimeOffset london = new DateTimeOffset(2023, 1, 1, 12, 0, 0, TimeSpan.Zero); // London: UTC+0
Console.WriteLine($"NY: {ny}"); // 1/1/2023 12:00:00 PM -05:00
Console.WriteLine($"London: {london}"); // 1/1/2023 12:00:00 PM +00:00
Console.WriteLine($"NY.CompareTo(London): {ny.CompareTo(london)}"); // -1 (NY UTC-এ পরে)
// NYC 12:00 PM EST = 5:00 PM UTC
// London 12:00 PM GMT = 12:00 PM UTC
// তাই London আগে ঘটল
}
}
আউটপুট
NY: 1/1/2023 12:00:00 PM -05:00 London: 1/1/2023 12:00:00 PM +00:00 NY.CompareTo(London): -1
সার্টিং (Sorting) এ প্রয়োগ
using System;
using System.Collections.Generic;
public class SortDemo
{
public static void Main()
{
List events = new List
{
new DateTimeOffset(2023, 1, 1, 12, 0, 0, TimeSpan.FromHours(-5)), // NY
new DateTimeOffset(2023, 1, 1, 12, 0, 0, TimeSpan.Zero), // London
new DateTimeOffset(2023, 1, 1, 12, 0, 0, TimeSpan.FromHours(9)), // Tokyo
};
events.Sort(); // CompareTo ব্যবহার করে UTC-ভিত্তিক সর্ট
Console.WriteLine("Events in chronological order (UTC):");
foreach (var e in events)
Console.WriteLine($" {e}");
}
}
আউটপুট
Events in chronological order (UTC): 1/1/2023 12:00:00 PM +00:00 (London - first in UTC) 1/1/2023 12:00:00 PM -05:00 (NY - 5 PM UTC) 1/1/2023 12:00:00 PM +09:00 (Tokyo - 3 AM UTC next day)
নোট: DateTimeOffset IComparable এবং IComparable<DateTimeOffset> ইমপ্লিমেন্ট করে।