System.TimeZoneInfo.IsDaylightSavingTime 方法 (DateTime)
方法描述
指示指定日期和时间是否处于当前 TimeZoneInfo 对象时区的夏时制范围内。
语法定义(C# System.TimeZoneInfo.IsDaylightSavingTime 方法 (DateTime) 的用法)
public bool IsDaylightSavingTime( DateTime dateTime )
参数/返回值
参数值/返回值 | 参数类型/返回类型 | 参数描述/返回描述 |
---|---|---|
dateTime | System-DateTime | 日期和时间值。 |
返回值 | System.Boolean | 如果 dateTime 参数为夏时制,则为 true;否则为 false。 |
提示和注释
TimeZoneInfo.IsDaylightSavingTime 的返回值受 TimeZoneInfo 对象表示的时区与 dateTime 参数的 Kind 属性之间关系的影响,如下表所示。
TimeZoneInfo 对象
DateTime.Kind 属性
结果
TimeZoneInfo.Local
DateTimeKind.Local
确定 dateTime 是否为夏时制。
TimeZoneInfo.Local
DateTimeKind.Utc
将 dateTime 从协调世界时 (UTC) 转换为本地时间,并确定其是否为夏时制。
TimeZoneInfo.Local
DateTimeKind.Unspecified
假定 dateTime 表示本地时间,并确定其是否为夏时制。
TimeZoneInfo.Utc
DateTimeKind.Local 、DateTimeKind.Unspecified 或 DateTimeKind.Utc
返回 false(UTC 不支持夏时制)。
任何其他 TimeZoneInfo对象。
DateTimeKind.Local
将本地时间转换为 TimeZoneInfo 对象的相当时间,然后确定后者是否为夏时制。
任何其他 TimeZoneInfo对象。
DateTimeKind.Utc
将 UTC 转换为 TimeZoneInfo 对象的相当时间,然后确定后者是否为夏时制。
任何其他 TimeZoneInfo对象。
DateTimeKind.Unspecified
确定 dateTime 是否为夏时制。
如果 TimeZoneInfo 对象表示的时区不支持夏时制,则此方法始终返回 false。 许多时区(包括 Utc)不观察夏时制。
如果 dateTime 参数指定当前对象时区中的不明确时间,则 TimeZoneInfo.IsDaylightSavingTime 方法会将 dateTime 解释为标准时间;如果此对象的 Kind 属性为 DateTimeKind.Local 或 DateTimeKind.Unspecified,则此方法返回 false。 如果 Kind 属性为 DateTimeKind.Utc,则此方法将选择正确的不明确时间,并指示该时间是否为夏时制。
因为 TimeZoneInfo.IsDaylightSavingTime(DateTime) 方法会为不明确的日期和时间(即,可以表示特定时区中的标准时间或夏时制的日期和时间)返回 false,所以 TimeZoneInfo.IsAmbiguousTime(DateTime) 方法可与 IsDaylightSavingTime(DateTime) 方法配合使用来确定时间是否为夏时制。 因为不明确的时间可同时为夏时制和标准时间,所以可以首先调用 IsAmbiguousTime(DateTime) 方法来确定日期和时间是否为夏时制。 如果该方法返回 false,则可以调用 IsDaylightSavingTime(DateTime) 方法来确定 DateTime 值是否为夏时制。 下面的示例演示该技术。
C#
VB
复制
DateTime unclearDate = new DateTime(2007, 11, 4, 1, 30, 0);
// Test if time is ambiguous.
Console.WriteLine("In the {0}, {1} is {2}ambiguous.",
TimeZoneInfo.Local.DisplayName,
unclearDate,
TimeZoneInfo.Local.IsAmbiguousTime(unclearDate) ? "" : "not ");
// Test if time is DST.
Console.WriteLine("In the {0}, {1} is {2}daylight saving time.",
TimeZoneInfo.Local.DisplayName,
unclearDate,
TimeZoneInfo.Local.IsDaylightSavingTime(unclearDate) ? "" : "not ");
Console.WriteLine();
// Report time as DST if it is either ambiguous or DST.
if (TimeZoneInfo.Local.IsAmbiguousTime(unclearDate) ||
TimeZoneInfo.Local.IsDaylightSavingTime(unclearDate))
Console.WriteLine("{0} may be daylight saving time in {1}.",
unclearDate, TimeZoneInfo.Local.DisplayName);
// The example displays the following output:
// In the (GMT-08:00) Pacific Time (US & Canada), 11/4/2007 1:30:00 AM is ambiguous.
// In the (GMT-08:00) Pacific Time (US & Canada), 11/4/2007 1:30:00 AM is not daylight saving time.
//
// 11/4/2007 1:30:00 AM may be daylight saving time in (GMT-08:00) Pacific Time (US & Canada).
如果 dateTime 参数指定的是无效时间,并且 dateTime 参数的 Kind 属性值为 DateTimeKind.Local,则方法调用会引发 ArgumentException;否则,此方法返回 false。
调用 TimeZoneInfo.IsDaylightSavingTime 方法以确定在显示时区名称时,是使用时区的 StandardName 值还是时区的 DaylightName 值。 有关说明,请参见“示例”部分。
对调用者的说明
在 Windows XP 系统中,如果当前实例为 TimeZoneInfo.Local,则此方法只应用当前调整规则。 因此,该方法在当前调整规则生效之前可能无法准确报告 dateTime 是否为夏时制期间时间。更多信息,请参见 Local 属性中的调用节说明。
System.TimeZoneInfo.IsDaylightSavingTime 方法 (DateTime)例子
下面的示例定义名为 DisplayDateWithTimeZoneName 的方法,该方法使用 TimeZoneInfo.IsDaylightSavingTime 方法确定是显示时区的标准时间名称还是夏时制名称。
private void DisplayDateWithTimeZoneName(DateTime date1, TimeZoneInfo timeZone) { Console.WriteLine("The time is {0:t} on {0:d} {1}", date1, timeZone.IsDaylightSavingTime(date1) ? timeZone.DaylightName : timeZone.StandardName); }
异常
异常 | 异常描述 |
---|---|
ArgumentException | dateTime 值的 Kind 属性为 DateTimeKind.Local,并且 dateTime 为无效时间。 |
版本信息
.NET Framework 受以下版本支持:4、3.5 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1
适用平台
Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。