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() - ऑफसेट जानकारी सहित