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

C#-এ DateTime.FromBinary() মেথড: বাইনারি ডেটা থেকে DateTime পুনরুদ্ধার


C#-এ DateTime.FromBinary() মেথডটি একটি ৬৪-বিট বাইনারি মান থেকে মূল DateTime অবজেক্ট পুনরুদ্ধার (deserialize) করতে ব্যবহৃত হয়। এটি DateTime.ToBinary() মেথডের বিপরীত কাজ করে।

সিনট্যাক্স (Syntax)

public static DateTime FromBinary(long value);

এখানে value হলো একটি ৬৪-বিট সাইনড ইন্টিজার যা Kind প্রোপার্টি (২-বিট) এবং Ticks প্রোপার্টি (৬২-বিট) এনকোড করে রাখে।

উদাহরণ ১: সিরিয়ালাইজেশন এবং ডিসিরিয়ালাইজেশন

using System;

public class Demo
{
    public static void Main()
    {
        // একটি DateTime তৈরি
        DateTime d1 = new DateTime(2019, 11, 10, 6, 20, 45);
        
        // বাইনারি-এ রূপান্তর (Serialize)
        long val = d1.ToBinary();
        
        // বাইনারি থেকে পুনরুদ্ধার (Deserialize)
        DateTime d2 = DateTime.FromBinary(val);
        
        System.Console.WriteLine("Initial DateTime = {0:y} {0:dd} ", d1);
        System.Console.WriteLine("\nNew DateTime = {0:y} {0:dd} ", d2);
    }
}

আউটপুট

Initial DateTime = November 2019 10
New DateTime = November 2019 10

উদাহরণ ২: সরাসরি বাইনারি মান থেকে DateTime

using System;

public class Demo
{
    public static void Main()
    {
        DateTime d1 = DateTime.FromBinary(100000);
        System.Console.WriteLine("DateTime = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss}", d1);
    }
}

আউটপুট

DateTime = 01 January 0001, 12:00:00

কীভাবে কাজ করে (Internal Structure)

৬৪-বিট বাইনারি মানের গঠন:

  • বিট ০-৬১ (৬২ বিট): Ticks প্রোপার্টি (১৬০১ সাল থেকে ১০০-ন্যানোসেকেন্ড ইন্টারভাল)
  • বিট ৬২-৬৩ (২ বিট): Kind প্রোপার্টি (Unspecified=0, Utc=1, Local=2)

বাইনারি স্ট্রাকচার ভিজ্যুয়ালাইজেশন

| Kind (2 bits) | Ticks (62 bits) |
|      63-62    |     61-0        |

ব্যবহারিক পরিস্থিতি: ডেটাবেস বা ফাইলে সংরক্ষণ

using System;
using System.IO;

public class BinaryDateTimeDemo
{
    public static void Main()
    {
        DateTime now = DateTime.Now;
        Console.WriteLine("Original: " + now);
        
        // ফাইলে বাইনারি হিসেবে লেখা
        long binary = now.ToBinary();
        File.WriteAllText("datetime.bin", binary.ToString());
        
        // ফাইল থেকে পড়ে পুনরুদ্ধার
        string content = File.ReadAllText("datetime.bin");
        long readBinary = long.Parse(content);
        DateTime restored = DateTime.FromBinary(readBinary);
        
        Console.WriteLine("Restored: " + restored);
        Console.WriteLine("Match: " + (now == restored));
    }
}

সতর্কতা: DateTimeKind.Local वाले ডেটা অন্য টাইমজোনের মেশিনে ডিসিরিয়ালাইজ করলে ভিন্ন লোকাল টাইম দেখাবে। UTC-তে সংরক্ষণ করা সুরক্ষিত।

  1. C#-এ DateTime.AddYears() পদ্ধতি

  2. C#-এ DateTime.AddHours() মেথড

  3. C#-এ DateTime.AddDays() মেথড

  4. C#-এ DateTime.Add() মেথড