Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में DateTime.FromBinary() मेथड - बाइनरी डेटा से DateTime पुनर्निर्माण

C# में DateTime.FromBinary() मेथड 64-बिट बाइनरी मान को डिसीरियलाइज़ करता है और मूल सीरियलाइज़्ड DateTime ऑब्जेक्ट को पुनर्निर्मित करता है। यह DateTime.ToBinary() का पूरक मेथड है।

सिंटैक्स

public static DateTime FromBinary (long val);

पैरामीटर val एक 64-बिट साइन्ड इंटीजर है जो 2-बिट फील्ड में Kind प्रॉपर्टी और 62-बिट फील्ड में Ticks प्रॉपर्टी को एन्कोड करता है।

उदाहरण 1: राउंड-ट्रिप सीरियलाइज़ेशन

using System; 

public class Demo 
{ 
    public static void Main() 
    { 
        DateTime d1 = new DateTime(2019, 11, 10, 6, 20, 45); 
        long val = d1.ToBinary(); 
        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

उदाहरण 2: कस्टम बाइनरी मान से

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

बाइनरी फॉर्मेट संरचना

64-बिट मान की संरचना:

  • बिट 0-61 (62 बिट्स): Ticks मान (100-नैनोसेकंड अंतराल)
  • बिट 62-63 (2 बिट्स): Kind फ्लैग
    • 00 = Unspecified
    • 01 = Utc
    • 10 = Local

महत्वपूर्ण व्यवहार: स्थानीय समय और समय क्षेत्र

using System;

public class Demo
{
    public static void Main()
    {
        // स्थानीय समय बनाएं
        DateTime local = new DateTime(2023, 6, 15, 12, 0, 0, DateTimeKind.Local);
        long binary = local.ToBinary();
        
        // उसी मशीन पर डिसीरियलाइज़ करें
        DateTime restored = DateTime.FromBinary(binary);
        Console.WriteLine("मूल: " + local);
        Console.WriteLine("पुनर्निर्मित: " + restored);
        Console.WriteLine("Kind: " + restored.Kind);
        
        // अलग समय क्षेत्र में मशीन पर परिणाम भिन्न हो सकते हैं!
    }
}

सावधानियां

  • स्थानीय समय के लिए, डिसीरियलाइज़ेशन वर्तमान समय क्षेत्र का उपयोग करता है
  • यदि बाइनरी डेटा अलग समय क्षेत्र में बनाया गया था, तो परिणाम भिन्न हो सकता है
  • UTC के लिए यह समस्या नहीं होती (Kind = Utc संरक्षित रहता है)
  • क्रॉस-टाइमज़ोन एप्लिकेशन के लिए UTC या DateTimeOffset का उपयोग करें

संबंधित मेथड्स

  • DateTime.ToBinary() - DateTime को 64-बिट बाइनरी में सीरियलाइज़ करता है
  • DateTime.ToFileTime() / ToFileTimeUtc() - फाइल समय फॉर्मेट
  • DateTimeOffset.ToBinary() - ऑफसेट जानकारी सहित
  1. - C# में DateTime.AddHours() मेथड

    C# में DateTime.AddHours() मेथड का उपयोग इस इंस्टेंस के मान में निर्दिष्ट संख्या में घंटे जोड़ने के लिए किया जाता है। यह मेथड एक नया DateTime लौटाता है। सिंटैक्स निम्नलिखित सिंटैक्स है - public DateTime AddHours (double hrs); यहां, hrs जोड़े जाने वाले घंटों की संख्या है। मान घंटे घटाने के लिए नकारा

  1. - C# में DateTime.AddDays() मेथड

    C# में DateTime.AddDays() मेथड का उपयोग इस इंस्टेंस के मान में निर्दिष्ट संख्या में दिन जोड़ने के लिए किया जाता है। यह मेथड एक नया DateTime लौटाता है। सिंटैक्स निम्नलिखित सिंटैक्स है - public DateTime AddDays (double days); यहां, पैरामीटर days जोड़े जाने वाले दिनों की संख्या है। घटाने के लिए, एक नक

  1. - C# में DateTime.Add() मेथड

    C# में DateTime.Add() मेथड का उपयोग एक नया DateTime लौटाने के लिए किया जाता है जो इस इंस्टेंस के मान में निर्दिष्ट TimeSpan का मान जोड़ता है। सिंटैक्स निम्नलिखित सिंटैक्स है - public DateTime Add (TimeSpan val); यहां, Val एक सकारात्मक या नकारात्मक समय अंतराल है। उदाहरण आइए DateTime.Add() मेथड को ला