DateTime.ToBinary Metoda

Definicja

Serializować bieżący obiekt DateTime do 64-bitowej wartości binarnej, która następnie może być użyta do odtworzenia obiektu DateTime.Serializes the current DateTime object to a 64-bit binary value that subsequently can be used to recreate the DateTime object.

public:
 long ToBinary();
public long ToBinary ();
member this.ToBinary : unit -> int64
Public Function ToBinary () As Long

Zwraca

64-bitowa liczba całkowita ze znakiem, która koduje Kind i Ticks właściwości.A 64-bit signed integer that encodes the Kind and Ticks properties.

Uwagi

Użyj metody ToBinary, aby przekonwertować wartość bieżącego obiektu DateTime na wartość binarną.Use the ToBinary method to convert the value of the current DateTime object to a binary value. Następnie użyj wartości binarnej i metody FromBinary, aby ponownie utworzyć oryginalny obiekt DateTime.Subsequently, use the binary value and the FromBinary method to recreate the original DateTime object.

Ważne

W niektórych przypadkach DateTime wartość zwrócona przez metodę FromBinary nie jest taka sama jak oryginalna wartość DateTime podana dla metody ToBinary.In some cases, the DateTime value returned by the FromBinary method is not identical to the original DateTime value supplied to the ToBinary method. Aby uzyskać więcej informacji, zobacz następną sekcję "dostosowanie czasu lokalnego".For more information, see the next section, "Local Time Adjustment".

Ustawianie czasu lokalnegoLocal Time Adjustment

Czas lokalny, czyli uniwersalny czas koordynowany dostosowany do lokalnej strefy czasowej, jest reprezentowany przez strukturę DateTime, której Właściwość Kind ma wartość Local.A local time, which is a Coordinated Universal Time adjusted to the local time zone, is represented by a DateTime structure whose Kind property has the value Local. Podczas przywracania wartości DateTime lokalnej z reprezentacji binarnej, która jest tworzona przez metodę ToBinary, Metoda FromBinary może dostosować wartość Recreate, tak aby nie była równa oryginalnej wartości.When restoring a local DateTime value from the binary representation that is produced by the ToBinary method, the FromBinary method may adjust the recreated value so that it is not equal to the original value. Może się to zdarzyć w następujących warunkach:This can occur under the following conditions:

  • Jeśli obiekt lokalny DateTime jest serializowany w jednej strefie czasowej przez metodę ToBinary, a następnie zostanie rozszeregowany w innej strefie czasowej przez metodę FromBinary, czas lokalny reprezentowany przez otrzymany obiekt DateTime zostanie automatycznie dostosowany do drugiej strefy czasowej.If a local DateTime object is serialized in one time zone by the ToBinary method, and then deserialized in a different time zone by the FromBinary method, the local time represented by the resulting DateTime object is automatically adjusted to the second time zone.

    Rozważmy na przykład obiekt DateTime, który reprezentuje czas lokalny o wartości 3 P.M.For example, consider a DateTime object that represents a local time of 3 P.M. Aplikacja, która jest wykonywana w strefie czasowej pacyficznego w Stanach Zjednoczonych, używa metody ToBinary, aby przekonwertować ten obiekt DateTime na wartość binarną.An application that is executing in the U.S. Pacific Time zone uses the ToBinary method to convert that DateTime object to a binary value. Inna aplikacja, która jest wykonywana w strefie czasowej USA, używa metody FromBinary, aby przekonwertować wartość binarną na nowy obiekt DateTime.Another application that is executing in the U.S. Eastern Time zone uses the FromBinary method to convert the binary value to a new DateTime object. Wartość nowego obiektu DateTime to 6, który reprezentuje punkt w czasie jako oryginalny 3-P.M.The value of the new DateTime object is 6 P.M., which represents the same point in time as the original 3 P.M. wartość, ale jest ustawiana na czas lokalny w środkowej strefie czasowej.value, but is adjusted to local time in the Eastern Time zone.

  • Jeśli reprezentacja binarna lokalnej wartości DateTime reprezentuje nieprawidłowy czas w lokalnej strefie czasowej systemu, w którym jest wywoływana FromBinary, czas jest dostosowywany tak, aby był prawidłowy.If the binary representation of a local DateTime value represents an invalid time in the local time zone of the system on which FromBinary is called, the time is adjusted so that it is valid.

    Na przykład strefie czasu pacyficznego w Stanach Zjednoczonych przejście od czasu standardowego do czasu letniego nastąpi 14 marca 2010 r. o godzinie 2:00, kiedy czas jest przesuwany o jedną godzinę — na 3:00.For example, the transition from standard time to daylight saving time occurs in the U.S. Pacific Time zone on March 14, 2010, at 2:00 A.M., when the time advances by one hour, to 3:00 A.M. Ten interwał godzinowy jest nieprawidłowy, czyli jest to przedział czasu, który nie istnieje w danej strefie czasowej.This hour interval is an invalid time, that is, a time interval that does not exist in this time zone. Poniższy przykład pokazuje, że gdy czas mieszczący się w tym zakresie jest konwertowany na wartość binarną przez metodę ToBinary i zostanie przywrócony przez metodę FromBinary, oryginalna wartość zostanie zmieniona, aby stała się prawidłowym czasem.The following example shows that when a time that falls within this range is converted to a binary value by the ToBinary method and is then restored by the FromBinary method, the original value is adjusted to become a valid time. Można określić, czy określona wartość daty i godziny może podlegać modyfikacji, przekazując ją do metody TimeZoneInfo.IsInvalidTime, jak pokazano w przykładzie.You can determine whether a particular date and time value may be subject to modification by passing it to the TimeZoneInfo.IsInvalidTime method, as the example illustrates.

    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
    
    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
    

Uwagi dotyczące wersjiVersion Considerations

Począwszy od .NET Framework w wersji 2,0, struktura DateTime składa się z pola rodzaju prywatnego, które wskazuje, czy określona wartość czasu jest oparta na czasie lokalnym, skoordynowanego czasu uniwersalnego (UTC), czy nie, ani w polu znaczniki prywatne, które zawiera liczbę taktów 100-nanosekund, które określają datę i godzinę.Starting with the .NET Framework version 2.0, a DateTime structure consists of a private Kind field, which indicates whether the specified time value is based on local time, Coordinated Universal Time (UTC), or neither, and a private Ticks field, which contains the number of 100-nanosecond ticks that specify a date and time. Dostęp do pola Ticks można uzyskać przy użyciu właściwości Ticks i można uzyskać dostęp do pola rodzaj przy użyciu właściwości Kind.The Ticks field can be accessed with the Ticks property and the Kind field can be accessed with the Kind property.

W przypadku .NET Framework 2,0, jeśli serializacja obiektu DateTime zostanie wykonana ręcznie zamiast przy użyciu interfejsu serializacji, takiego jak System.Runtime.Serialization.ISerializable, potrzebne jest tylko Serializacja danych taktów w strukturze DateTime.Prior to the .NET Framework 2.0, if you serialized a DateTime object manually instead of using a serialization interface such as System.Runtime.Serialization.ISerializable, you only needed to serialize the Ticks data in the DateTime structure. Począwszy od wersji 2,0, należy również serializować dane rodzajowe.Starting with version 2.0, you must also serialize the Kind data.

Dotyczy

Zobacz też