时间和时区

更新:2007 年 11 月

除了基本的 DateTime 结构外,.NET Framework 还提供了下列类来支持对时区的处理:

  • TimeZone

    使用此类可以处理系统的本地时区和协调世界时 (UTC) 区域。 TimeZone 类的大部分功能已由 TimeZoneInfo 类取代。

  • TimeZoneInfo

    使用此类可以处理系统上预定义的任何时区、创建新时区,以及轻松地将日期和时间从一个时区转换到另一个时区。在新开发过程中,请使用 TimeZoneInfo 类代替 TimeZone 类。

  • DateTimeOffset

    使用此结构可以处理 UTC 偏移量(即差值)已知的日期和时间。DateTimeOffset 结构将日期和时间值与该时间的 UTC 偏移量组合在一起。由于它与 UTC 存在这种关系,因此单个日期和时间值可以明确地标识单个时间点。这就使得 DateTimeOffset 值比 DateTime 值在不同计算机之间具有更好的可移植性。

本节提供处理时区以及创建时区识别应用程序(可将日期和时间从一个时区转换到另一个时区)时所需的信息。

本节内容

时区概述

讨论创建时区识别应用程序中涉及的术语、概念和问题。

在 DateTime、DateTimeOffset 和 TimeZoneInfo 之间进行选择

讨论在处理日期和时间数据时应于何时使用 DateTimeDateTimeOffsetTimeZoneInfo 类型。

查找在本地系统上定义的时区

描述如何枚举本地系统上的时区。

如何:枚举计算机上存在的时区

提供枚举计算机注册表中定义的时区的示例,以及允许用户从列表中选择预定义时区的示例。

如何:访问预定义的 UTC 和本地时区对象

描述如何访问协调世界时和本地时区。

如何:实例化 TimeZoneInfo 对象

描述如何实例化本地系统注册表中的 TimeZoneInfo 对象。

实例化 DateTimeOffset 对象

讨论如何实例化 DateTimeOffset 对象以及如何将 DateTime 值转换为 DateTimeOffset 值。

如何:创建不带调整规则的时区

描述如何创建不支持与夏令时来回转换的自定义时区。

如何:创建带有调整规则的时区

描述如何创建支持与夏令时进行一种或多种转换的自定义时区。

保存和还原时区

描述对序列化和反序列化时区数据的 TimeZoneInfo 支持,并阐释可以使用这些数据的某些方案。

如何:将时区保存到嵌入的资源中

描述如何创建自定义时区并将其信息保存在资源文件中。

如何:从嵌入的资源还原时区

描述如何实例化已保存到嵌入的资源文件中的自定义时区。

使用日期和时间执行算术运算

讨论对 DateTimeDateTimeOffset 值执行加、减和比较运算时涉及的问题。

如何:在日期和时间算法中使用时区

讨论如何执行反映时区调整规则的日期和时间运算。

在 DateTime 与 DateTimeOffset 之间进行转换

描述如何在 DateTimeDateTimeOffset 值之间进行转换。

在不同时区之间转换时间

描述如何将时间从一个时区转换到另一个时区。

如何:解决不明确的时间

描述如何通过将不明确的时间映射到时区的标准时间来解析它。

如何:让用户解决不明确的时间

描述如何让用户确定不明确的本地时间与协调世界时之间的映射。

参考

TimeZoneInfo