DateTime.FromBinary(Int64) メソッド


64 ビットのバイナリ値を逆シリアル化し、元のシリアル化 DateTime オブジェクトを再構築します。Deserializes a 64-bit binary value and recreates an original serialized DateTime object.

 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



2 ビット フィールドの Kind プロパティおよび 62 ビット フィールドの Ticks プロパティをエンコードする 64 ビット符号付き整数。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.


dateDataMinValue 未満であるか、 MaxValueを超えています。dateData is less than MinValue or greater than MaxValue.


現在の DateTime オブジェクトの値をバイナリ値に変換するには、ToBinary メソッドを使用します。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.


場合によっては、FromBinary メソッドによって返される DateTime 値は、ToBinary メソッドに指定された元の DateTime 値と同一ではありません。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

ローカルタイムゾーンに調整された世界協定時刻である現地時刻は、Kind プロパティに Local値が設定された DateTime 構造体によって表されます。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. ToBinary メソッドによって生成されたバイナリ表現からローカルの DateTime 値を復元する場合、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 メソッドによって1つのタイムゾーンでシリアル化され、その後 FromBinary メソッドによって別のタイムゾーンで逆シリアル化された場合、結果の DateTime オブジェクトによって表されるローカル時間は、2番目のタイムゾーンに自動的に調整されます。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.

    たとえば、午後3時の現地時刻を表す DateTime オブジェクトを考えてみます。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時です。これは、元の午後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.

    たとえば、標準時から夏時間への移行は、2:00 2010 年3月14日の米国の太平洋標準時のタイムゾーンで行われます。これは、時間が1時間経過したときに、午前3時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.",
          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, _
          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)、またはそのどちらでもない、プライベートティックフィールドに連結されているかどうかを示すプライベートの種類のフィールドで構成されます。このフィールドには、日付と時刻を指定する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 より前では、System.Runtime.Serialization.ISerializableなどのシリアル化インターフェイスを使用せずに DateTime オブジェクトを手動でシリアル化した場合、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.