কম্পিউটার টিউটোরিয়াল

C#-এ DateTimeOffset.CompareTo() মেথড: DateTimeOffset অবজেক্ট তুলনা


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> ইমপ্লিমেন্ট করে।

  1. C#-এ DateTimeOffset.FromFileTime() পদ্ধতি

  2. C#-এ DateTimeOffset.Compare() মেথড

  3. C#-এ DateTimeOffset.AddYears() মেথড

  4. C#-এ CompareTo মেথড