DateTime.FromBinary(Int64) Метод

Определение

Десериализует 64-битовое значение и воссоздает исходный сериализованный объект DateTime.Deserializes a 64-bit binary value and recreates an original serialized DateTime object.

public:
 static DateTime FromBinary(long dateData);
public static DateTime FromBinary (long dateData);
static member FromBinary : int64 -> DateTime
Public Shared Function FromBinary (dateData As Long) As DateTime

Параметры

dateData
Int64

64-разрядное целое число со знаком, кодирующее свойство Kind в 2-разрядное поле и свойство Ticks в 62-разрядное поле.A 64-bit signed integer that encodes the Kind property in a 2-bit field and the Ticks property in a 62-bit field.

Возвращаемое значение

Объект, который эквивалентен объекту DateTime, сериализованному методом ToBinary().An object that is equivalent to the DateTime object that was serialized by the ToBinary() method.

Исключения

Значение dateData меньше MinValue или больше MaxValue.dateData is less than MinValue or greater than MaxValue.

Комментарии

Используйте метод ToBinary, чтобы преобразовать значение текущего объекта DateTime в двоичное значение.Use the ToBinary method to convert the value of the current DateTime object to a binary value. Затем используйте двоичное значение и метод FromBinary для повторного создания исходного объекта DateTime.Subsequently, use the binary value and the FromBinary method to recreate the original DateTime object.

Важно!

В некоторых случаях значение DateTime, возвращаемое методом FromBinary, не идентично исходному значению DateTime, переданному в метод 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. Дополнительные сведения см. в следующем разделе "Настройка местного времени".For more information, see the next section, "Local Time Adjustment".

Настройка местного времениLocal Time Adjustment

Местное время, которое представляет собой время в формате UTC, настраивается на местный часовой пояс, представлено DateTime структурой, свойство Kind которого имеет значение 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. При восстановлении локального значения DateTime из двоичного представления, созданного методом ToBinary, метод FromBinary может изменить повторно созданное значение так, чтобы оно не равнялось исходному значению.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. Это может произойти в следующих случаях.This can occur under the following conditions:

  • Если локальный объект DateTime сериализуется в одном часовом поясе методом ToBinary, а затем десериализуется в другом часовом поясе с помощью метода FromBinary, местное время, представленное полученным DateTime объектом, автоматически корректируется до второго часового пояса.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.

    Например, рассмотрим объект DateTime, представляющий местное время в 3 вечера.For example, consider a DateTime object that represents a local time of 3 P.M. Приложение, которое выполняется в тихоокеанском часовом поясе США, использует метод ToBinary для преобразования этого DateTime объекта в двоичное значение.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. Другое приложение, которое выполняется в часовом поясе США, использует метод FromBinary для преобразования двоичного значения в новый объект DateTime.Another application that is executing in the U.S. Eastern Time zone then uses the FromBinary method to convert the binary value to a new DateTime object. Значение нового объекта DateTime равно 6 P.M., что соответствует тому же моменту времени, что и исходное 3-часовоеThe value of the new DateTime object is 6 P.M., which represents the same point in time as the original 3 P.M. значение, но корректируется на местное время в Восточном часовом поясе.value, but is adjusted to local time in the Eastern Time zone.

  • Если двоичное представление значения локального DateTime представляет недопустимое время в местном часовом поясе системы, в которой вызывается FromBinary, время корректируется так, чтобы оно было допустимым.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.

    Например, переход со стандартного времени на переход на летнее время происходит в тихоокеанском часовом поясе США 14 марта 2010 г. в 2:00 утра, когда время увеличивается на час, до 3:00 утра.For example, the transition from standard time to daylight saving time occurs in the Pacific Time zone of the United States on March 14, 2010, at 2:00 A.M., when the time advances by one hour, to 3:00 A.M. Этот часовой интервал является недопустимым временем, то есть интервалом времени, который не существует в этом часовом поясе.This hour interval is an invalid time, that is, a time interval that does not exist in this time zone. В следующем примере показано, что когда время, попадающее в этот диапазон, преобразуется в двоичное значение методом ToBinary и затем восстанавливается методом FromBinary, исходное значение корректируется на допустимое время.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. Можно определить, может ли определенное значение даты и времени изменяться путем передачи его в метод TimeZoneInfo.IsInvalidTime, как показано в примере.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
    

Рекомендации по версиямVersion Considerations

Начиная с версии .NET Framework 2,0, структура DateTime состоит из поля закрытого типа, которое указывает, является ли указанное время локальным временем, скоординированным временем (UTC) или нет, сцеплением с частным полем Tick, которое содержит количество тактов 100-наносекундных, которые задают дату и время.Starting with the .NET Framework version 2.0, a DateTime structure consists of a private Kind field, which indicates whether the specified time is local time, Coordinated Universal Time (UTC), or neither, concatenated to a private Ticks field, which contains the number of 100-nanosecond ticks that specify a date and time. Доступ к тактам можно получить с помощью свойства Ticks, а доступ к полю Секинд можно получить с помощью свойства Kind.The number of ticks can be accessed with the Ticks property and theKind field can be accessed with the Kind property.

До .NET Framework 2,0 при сериализации DateTime объекта вручную вместо использования интерфейса сериализации, такого как System.Runtime.Serialization.ISerializable, необходимо сериализовать только данные тактов в 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 needed to serialize only the Ticks data in the DateTime. Начиная с .NET Framework 2,0, необходимо также сериализовать данные типа.Starting with the .NET Framework 2.0, you must also serialize the Kind data.

Применяется к

Дополнительно