System.TimeZone.GetUtcOffset 方法

方法描述

返回指定本地时间的协调世界时 (UTC) 偏移量。

语法定义(C# System.TimeZone.GetUtcOffset 方法 的用法)

public abstract TimeSpan GetUtcOffset(
	DateTime time
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
time System-DateTime 日期和时间值。
返回值 System.TimeSpan 与 Time 相比的协调世界时 (UTC) 偏移量。

提示和注释

该方法返回 time 参数与协调世界时 (UTC) 之间的偏移量(即差值)。 即:

时间 = UTC + 偏移量

该方法根据其 Kind 属性解释 time 的时区。 如果 Kind 属性值为 DateTimeKind.Local 或 DateTimeKind.Unspecified,则该方法返回本地时区的偏移量。 如果 Kind 属性值为 DateTimeKind.Utc,则该方法返回一个等于 TimeSpan.Zero 的偏移量。

如果本地时区遵守夏时制,则确定本地时区的偏移量时,GetUtcOffset 将当前调整规则应用于 time。 即 GetUtcOffset 返回的偏移量会反映 time 为时区的标准时间还是夏时制。

注意

GetUtcOffset 方法只识别本地时区的当前夏时制调整规则。 因此,只有在最新调整规则有效期间才能保证准确返回本地时间的 UTC 偏移量。 如果 Time 为遵守先前调整规则的历史日期和时间值,则可能会返回不准确的结果。

GetUtcOffset 方法对应于 TimeZoneInfo.GetUtcOffset 方法。 应尽可能使用 TimeZoneInfo.GetUtcOffset 方法。

由于 Time 表示的日期和时间值以及该值与 UTC 的偏移量未紧密耦合,因此在不同计算机上运行时或者在同一计算机的不同时区下运行时,本地或未指定的日期和时间值可能会返回不同的偏移值。 如果不希望此行为发生,请改用 DateTimeOffset 值。 DateTimeOffset 数据类型将日期和时间值与它和 UTC 的偏移量紧密耦合。

System.TimeZone.GetUtcOffset 方法例子

下面的示例使用 GetUtcOffset 方法,返回几个本地时间的协调世界时 (UTC) 偏移量。

// Example of the TimeZone.ToLocalTime( DateTime ) and 
// TimeZone.GetUtcOffset( DateTime ) methods.
using System;

class UTCTimeDemo
{
    static void Main( )
    {
        const string headFmt = "{0,-20}{1,-20}{2,-12}{3}";

        // Get the local time zone and a base Coordinated Universal 
        // Time (UTC).
        TimeZone localZone = TimeZone.CurrentTimeZone;
        DateTime baseUTC = new DateTime( 2000, 1, 1 );

        Console.WriteLine( "This example of \n" +
            "   TimeZone.ToLocalTime( DateTime ) and\n" +
            "   TimeZone.GetUtcOffset( DateTime ) \ngenerates the " +
            "following output, which varies depending on the time " +
            "zone \nin which it is run. The example creates several " +
            "Coordinated Universal \nTimes (UTC), displays the " +
            "corresponding local times and UTC offsets, \nand shows " +
            "if the times occur in daylight saving time (DST)." );
        Console.WriteLine( "\nLocal time: {0}\n", 
            localZone.StandardName );

        Console.WriteLine( headFmt, "UTC", "Local Time", 
            " Offset", "DST?" );
        Console.WriteLine( headFmt, "---", "----------", 
            " ------", "----" );

        // Generate several UTC times.
        for( int loopX = 0; loopX <= 10; loopX++ )
        {
            // Calculate the local time and UTC offset.
            DateTime localTime = localZone.ToLocalTime( baseUTC );
            TimeSpan localOffset = 
                localZone.GetUtcOffset( localTime );

            Console.WriteLine( "{0,-20:yyyy-MM-dd HH:mm}" +
                "{1,-20:yyyy-MM-dd HH:mm}{2,-12}{3}", 
                baseUTC, localTime, localOffset, 
                localZone.IsDaylightSavingTime( localTime ) );

            // Advance to another UTC.
            baseUTC = baseUTC.AddDays( 155.55 );
        }
    } 
} 

/*
This example of
   TimeZone.ToLocalTime( DateTime ) and
   TimeZone.GetUtcOffset( DateTime )
generates the following output, which varies depending on the time zone
in which it is run. The example creates several Coordinated Universal
Times (UTC), displays the corresponding local times and UTC offsets,
and shows if the times occur in daylight saving time (DST).

Local time: Pacific Standard Time

UTC                 Local Time           Offset     DST?
---                 ----------           ------     ----
2000-01-01 00:00    1999-12-31 16:00    -08:00:00   False
2000-06-04 13:12    2000-06-04 06:12    -07:00:00   True
2000-11-07 02:24    2000-11-06 18:24    -08:00:00   False
2001-04-11 15:36    2001-04-11 08:36    -07:00:00   True
2001-09-14 04:48    2001-09-13 21:48    -07:00:00   True
2002-02-16 18:00    2002-02-16 10:00    -08:00:00   False
2002-07-22 07:12    2002-07-22 00:12    -07:00:00   True
2002-12-24 20:24    2002-12-24 12:24    -08:00:00   False
2003-05-29 09:36    2003-05-29 02:36    -07:00:00   True
2003-10-31 22:48    2003-10-31 14:48    -08:00:00   False
2004-04-04 12:00    2004-04-04 05:00    -07:00:00   True
*/

异常

异常 异常描述

命名空间

namespace: System

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

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。