C# में DateTime.ToBinary() मेथड वर्तमान DateTime ऑब्जेक्ट को 64-बिट बाइनरी मान में सीरियलाइज़ करता है जिसका उपयोग DateTime ऑब्जेक्ट को पुनर्निर्मित करने के लिए किया जा सकता है। वापसी मान एक 64-बिट साइन्ड इंटीजर है।
सिंटैक्स
public long ToBinary ();
उदाहरण 1: विशिष्ट तिथि
using System;
public class Demo
{
public static void Main()
{
DateTime d = new DateTime(2019, 10, 10, 8, 10, 40);
Console.WriteLine("Date = {0}", d);
long res = d.ToBinary();
Console.WriteLine("64-bit binary value : {0}", res);
}
}
आउटपुट
Date = 10/10/2019 8:10:40 AM 64-bit binary value : 637062918400000000
उदाहरण 2: वर्तमान समय
using System;
public class Demo
{
public static void Main()
{
DateTime d = DateTime.Now;
Console.WriteLine("Date = {0}", d);
long res = d.ToBinary();
Console.WriteLine("64-bit binary value : {0}", res);
}
}
आउटपुट
Date = 10/16/2019 8:15:56 AM 64-bit binary value : -8586303931293472296
नोट: नकारात्मक मान इंगित करता है कि Kind = Local है (साइन बिट सेट)
बाइनरी फॉर्मेट संरचना (64 बिट्स)
- बिट्स 0-61 (62 बिट्स): Ticks - 1 जनवरी 0001 से 100-नैनोसेकंड अंतराल
- बिट्स 62-63 (2 बिट्स): Kind फ्लैग
00= Unspecified01= Utc10= Local
राउंड-ट्रिप: ToBinary() → FromBinary()
using System;
public class Demo
{
public static void Main()
{
// UTC समय - सुरक्षित राउंड-ट्रिप
DateTime utc = new DateTime(2023, 6, 15, 12, 0, 0, DateTimeKind.Utc);
long binary = utc.ToBinary();
DateTime restored = DateTime.FromBinary(binary);
Console.WriteLine("मूल UTC: " + utc);
Console.WriteLine("पुनर्निर्मित: " + restored);
Console.WriteLine("समान: " + (utc == restored)); // True
// स्थानीय समय - समय क्षेत्र पर निर्भर
DateTime local = new DateTime(2023, 6, 15, 12, 0, 0, DateTimeKind.Local);
long binary2 = local.ToBinary();
DateTime restored2 = DateTime.FromBinary(binary2);
Console.WriteLine("\nमूल स्थानीय: " + local);
Console.WriteLine("पुनर्निर्मित: " + restored2);
Console.WriteLine("समान: " + (local == restored2)); // समान मशीन/समयक्षेत्र पर True
}
}
सावधानियां
- स्थानीय समय के लिए: डिसीरियलाइज़ेशन वर्तमान समय क्षेत्र का उपयोग करता है - अलग समय क्षेत्र में अलग परिणाम देगा
- UTC के लिए: समय क्षेत्र स्वतंत्र, सुरक्षित राउंड-ट्रिप
- Unspecified के लिए: कोई समय क्षेत्र रूपांतरण नहीं
- क्रॉस-मशीन/क्रॉस-टाइमज़ोन सीरियलाइज़ेशन के लिए UTC या DateTimeOffset का उपयोग करें
उपयोग के मामले
- कॉम्पैक्ट बाइनरी सीरियलाइज़ेशन (8 बाइट्स बनाम स्ट्रिंग के 20+ बाइट्स)
- डेटाबेस भंडारण (BIGINT कॉलम)
- नेटवर्क प्रोटोकॉल, मेमोरी-मैप्ड फाइलें
- कैशिंग जहां स्थान महत्वपूर्ण है
संबंधित मेथड्स
- DateTime.FromBinary() - बाइनरी से DateTime पुनर्निर्माण
- DateTime.ToFileTime() / ToFileTimeUtc() - Windows फाइल समय फॉर्मेट
- DateTimeOffset.ToBinary() - ऑफसेट जानकारी सहित (अधिक मजबूत)