System.DateTime.ToBinary ve FromBinary yöntemleri

Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.

ToBinary Geçerli DateTime nesnenin değerini ikili değere dönüştürmek için yöntemini kullanın. Daha sonra, özgün DateTime nesneyi yeniden oluşturmak için ikili değeri ve FromBinary yöntemini kullanın.

Önemli

Bazı durumlarda, yöntemi tarafından FromBinary döndürülen değer yöntemine DateTime sağlanan özgün DateTime değerle ToBinary aynı değildir. Daha fazla bilgi için sonraki "Yerel Saat Ayarlaması" bölümüne bakın.

Yapı DateTime , belirtilen saat değerinin Kind yerel saate, Eşgüdümlü Evrensel Saat'e (UTC) göre mi yoksa bir tarih ve saat belirten 100 nanosaniyelik değer sayısını içeren özel bir alanla birleştirilmiş olup olmadığını gösteren özel Ticks bir alandan oluşur.

Yerel saat ayarlaması

Yerel saat dilimine ayarlanmış Eşgüdümlü Evrensel Saat olan yerel saat, özelliği değerine Localsahip bir DateTime yapıyla Kind temsil edilir. yöntemi tarafından ToBinary oluşturulan ikili gösterimden yerel DateTime bir değeri geri yüklerken, FromBinary yöntem yeniden oluşturulan değeri özgün değere eşit olmayacak şekilde ayarlayabilir. Bu, aşağıdaki koşullar altında oluşabilir:

  • Yerel DateTime bir nesne yöntemiyle ToBinary tek bir saat diliminde seri hale getirilirse ve ardından yöntemi tarafından farklı bir saat diliminde seri durumdan FromBinary çıkarılırsa, sonuçta elde DateTime edilen nesne tarafından temsil edilen yerel saat otomatik olarak ikinci saat dilimine ayarlanır.

    Örneğin, saat 15:00'te yerel saati temsil eden bir nesne düşününDateTime. ABD Pasifik Saat diliminde yürütülen bir uygulama, bu DateTime nesneyi ikili değere dönüştürmek için yöntemini kullanırToBinary. Daha sonra ABD Doğu Saat diliminde yürütülen başka bir uygulama, ikili değeri yeni DateTime bir nesneye dönüştürmek için yöntemini kullanırFromBinary. Yeni DateTime nesnenin değeri 18:00'dir ve özgün 15:00 değeriyle aynı zaman noktasını temsil eder, ancak Doğu Saat dilimindeki yerel saate ayarlanır.

  • Bir yerel DateTime değerin ikili gösterimi, sistemin çağrılan yerel saat diliminde FromBinary geçersiz bir saati temsil ederse, saat geçerli olacak şekilde ayarlanır.

    Örneğin, standart saatten yaz saati saatine geçiş, Birleşik Devletler Pasifik Saat diliminde 14 Mart 2010 saat 02:00'de, saat bir saat ilerlediğinde 03:00'e kadar gerçekleşir. Bu saat aralığı geçersiz bir saat, yani bu saat diliminde mevcut olmayan bir zaman aralığıdır. Aşağıdaki örnekte, bu aralık içinde kalan bir saat yöntemi tarafından ToBinary ikili değere dönüştürüldüğünde ve yöntemi tarafından FromBinary geri yüklendiğinde, özgün değerin geçerli bir saat olacak şekilde ayarlandığı gösterilir. Örnekte gösterildiği gibi, belirli bir tarih ve saat değerini yönteme TimeZoneInfo.IsInvalidTime geçirerek değişikliğe tabi olup olmayacağını belirleyebilirsiniz.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          DateTime localDate = new DateTime(2010, 3, 14, 2, 30, 0, DateTimeKind.Local);
          long binLocal = localDate.ToBinary();
          if (TimeZoneInfo.Local.IsInvalidTime(localDate))
             Console.WriteLine("{0} is an invalid time in the {1} zone.",
                               localDate,
                               TimeZoneInfo.Local.StandardName);
    
          DateTime localDate2 = DateTime.FromBinary(binLocal);
          Console.WriteLine("{0} = {1}: {2}",
                            localDate, localDate2, localDate.Equals(localDate2));
       }
    }
    // The example displays the following output:
    //    3/14/2010 2:30:00 AM is an invalid time in the Pacific Standard Time zone.
    //    3/14/2010 2:30:00 AM = 3/14/2010 3:30:00 AM: False
    
    open System
    
    let localDate = DateTime(2010, 3, 14, 2, 30, 0, DateTimeKind.Local)
    let binLocal = localDate.ToBinary()
    if TimeZoneInfo.Local.IsInvalidTime localDate then
        printfn $"{localDate} is an invalid time in the {TimeZoneInfo.Local.StandardName} zone."
    
    let localDate2 = DateTime.FromBinary binLocal
    printfn $"{localDate} = {localDate2}: {localDate.Equals localDate2}"
    
    // The example displays the following output:
    //    3/14/2010 2:30:00 AM is an invalid time in the Pacific Standard Time zone.
    //    3/14/2010 2:30:00 AM = 3/14/2010 3:30:00 AM: False
    
    Module Example
       Public Sub Main()
          Dim localDate As Date = DateTime.SpecifyKind(#03/14/2010 2:30AM#, DateTimeKind.Local)
          Dim binLocal As Long = localDate.ToBinary()
          If TimeZoneInfo.Local.IsInvalidTime(localDate) Then
             Console.WriteLine("{0} is an invalid time in the {1} zone.", _
                               localDate, _
                               TimeZoneInfo.Local.StandardName)
          End If
          Dim localDate2 As Date = DateTime.FromBinary(binLocal)
          Console.WriteLine("{0} = {1}: {2}", _
                            localDate, localDate2, localDate.Equals(localDate2))
       End Sub
    End Module
    ' The example displays the following output:
    '    3/14/2010 2:30:00 AM is an invalid time in the Pacific Standard Time zone.
    '    3/14/2010 2:30:00 AM = 3/14/2010 3:30:00 AM: False