信息
您所需的主题如下所示。但此主题未包含在此库中。

DateTime.ToBinary 方法

2013/12/13

将当前 DateTime 对象序列化为一个 64 位二进制值,该值随后可用于重新创建 DateTime 对象。

Namespace:  System
程序集:  mscorlib(位于 mscorlib.dll 中)

public long ToBinary()

返回值

类型: System.Int64
64 位带符号整数,它对 KindTicks 属性进行了编码。

使用 ToBinary 方法将当前 DateTime 对象的值转换为二进制值。随后,使用该二进制值以及 FromBinary 方法重新创建初始的 DateTime 对象。

重要说明重要说明:

在某些情况下,由 FromBinary 方法返回的 DateTime 值与提供给 ToBinary 方法的原始 DateTime 值不同。有关更多信息,请参见下一节,“地方时间调整”。

本地时间调整

本地时间(即调整为本地时区的协调世界时)由 Kind 属性值为 LocalDateTime 结构表示。当从 ToBinary 方法生成的二进制表示形式还原本地 DateTime 值时,FromBinary 方法可以调整重新创建的值,以使该值不等于原始值。在下列条件下,可能会出现这种情况:

  • 如果本地 DateTime 对象在某个时区内由 ToBinary 方法序列化,然后在另一个时区内由 FromBinary 方法反序列化,则结果 DateTime 对象表示的本地时间自动调整为第二个时区。

    例如,请考虑一个表示本地时间下午 3 点的 DateTime 对象。正在美国太平洋时区执行的应用程序使用 ToBinary 方法将该 DateTime 对象转换为二进制值。在美国东部时区执行的另一个应用程序使用 FromBinary 方法来将二进制值转换为新 DateTime 对象。新的 DateTime 对象的值为下午 6 点,它表示与初始的下午 3 点值相同的时间点,但是已调整为东部时区中的本地时间。

  • 如果本地 DateTime 值的二进制表示形式表示在调用 FromBinary 的系统的本地时区中的无效时间,那么该时间将被调整为有效。

    例如,从标准时间到夏时制的切换在美国太平洋时区的 2010 年 3 月 14 日凌晨 2:00 发生,此时时间前进一个小时,成为凌晨 3:00。此时间间隔为无效时间,即,此时区中不存在的时间间隔。下面的示例显示了位于此范围内的时间通过 ToBinary 方法转换为二进制值,然后在通过 FromBinary 方法还原时,原始值将调整为有效的时间。您可以通过将特定日期和时间值传递到 TimeZoneInfo.IsInvalidTime 方法确定是否对其进行修改,如示例所阐释。

版本注意事项

从 .NET Framework 2.0 版开始,DateTime 结构由一个 Kind 私有字段和一个 Ticks 私有字段组成,Kind 字段指示指定的时间值是基于本地时间、协调世界时 (UTC),还是两者皆否,而 Ticks 字段包含指定日期和时间的计时周期数,一个计时周期为 100 纳秒。Ticks 字段可通过 Ticks 属性访问,而 Kind 字段可通过 Kind 属性访问。

Windows Phone OS

受以下版本支持: 8.0

显示: