TimeZone.GetUtcOffset 方法

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

**命名空间:**System
**程序集:**mscorlib(在 mscorlib.dll 中)

语法

声明
Public MustOverride Function GetUtcOffset ( _
    time As DateTime _
) As TimeSpan
用法
Dim instance As TimeZone
Dim time As DateTime
Dim returnValue As TimeSpan

returnValue = instance.GetUtcOffset(time)
public abstract TimeSpan GetUtcOffset (
    DateTime time
)
public:
virtual TimeSpan GetUtcOffset (
    DateTime time
) abstract
public abstract TimeSpan GetUtcOffset (
    DateTime time
)
public abstract function GetUtcOffset (
    time : DateTime
) : TimeSpan

参数

  • time
    本地日期和时间。

返回值

time 的 UTC 偏移量,以刻度数来测量。

备注

协调通用时间 (UTC) 以前称为格林尼治标准时间 (GMT)。本地时间为所使用计算机上的日期和时间。偏移量为本地时间与 UTC 之间的差异。即:

本地时间 = UTC + 偏移量

time 必须处于公历和此实例所表示的时区中。如果 time 处于夏时制,此方法将返回该夏时制时区的 UTC 偏移量。此方法从系统中获取夏时制规则。

例如,在美国太平洋标准时区(具有 -8 小时的时差),GetUtcOffset(new DateTime(1999, 1, 1)) 返回 -288000000000。

示例

下面的代码示例使用 GetUtcOffset 方法,返回几个本地时间的协调通用时间 (UTC) 时差。

' Example of the TimeZone.ToLocalTime( DateTime ) and 
' TimeZone.GetUtcOffset( DateTime ) methods.
Imports System
Imports Microsoft.VisualBasic

Module UTCTimeDemo

    Sub Main( )

        Const headFmt As String = "{0,-20}{1,-20}{2,-12}{3}"

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

        Console.WriteLine( "This example of " & vbCrLf & _
            "   TimeZone.ToLocalTime( DateTime ) and" & vbCrLf & _
            "   TimeZone.GetUtcOffset( DateTime ) " & vbCrLf & _
            "generates the following output, which varies " & _
            "depending on the time zone " & vbCrLf & "in which " & _
            "it is run. The example creates several Coordinated " & _
            "Universal " & vbCrLf & "Times (UTC), displays the " & _
            "corresponding local times and UTC offsets, " & _
            vbCrLf & "and shows if the times occur in daylight " & _
            "saving time (DST)." & vbCrLf )
        Console.WriteLine( "Local time: {0}" & vbCrLf, _
            localZone.StandardName )

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

        ' Generate several UTC times.
        Dim loopX As Integer
        For loopX = 0 to 10

            ' Calculate the local time and UTC offset.
            Dim localTime As DateTime = _
                localZone.ToLocalTime( baseUTC )
            Dim localOffset As TimeSpan = _
                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 )
        Next loopX
    End Sub 
End Module 

' 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
// 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
*/ 
// Example of the TimeZone::ToLocalTime( DateTime ) and 
// TimeZone::GetUtcOffset( DateTime ) methods.
using namespace System;
int main()
{
   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 = 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
*/
// Example of the TimeZone.ToLocalTime( DateTime ) and 
// TimeZone.GetUtcOffset( DateTime ) methods.
import System.*;

class UTCTimeDemo
{
    public static void main(String[] args)
    {
        final String headFmt = "{0,-20}{1,-20}{2,-12}{3}";

        // Get the local time zone and a base Coordinated Universal 
        // Time (UTC).
        TimeZone localZone = TimeZone.get_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.get_StandardName());
        Console.WriteLine(headFmt, new Object[] { "UTC", "Local Time",
            " Offset","DST?" });
        Console.WriteLine(headFmt, new Object[] { "---", "----------",
            " ------", "----" });

        // 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}",
                new Object[] {baseUTC, localTime, localOffset,
                (System.Boolean)localZone.IsDaylightSavingTime(localTime) });

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

/*
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
*/

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0、1.0

请参见

参考

TimeZone 类
TimeZone 成员
System 命名空间