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 为无效时间。

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.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 系统要求。