Nyelv

TimeZoneInfo.GetUtcOffset Metódus

Definíció

Kiszámítja az időzóna és az egyezményes világidő (UTC) időeltolódását vagy különbségét egy adott dátum és idő esetében.

Túlterhelések

Név Description
GetUtcOffset(DateTime)

Kiszámítja az időzóna és az egyezményes világidő (UTC) időeltolódását vagy különbségét egy adott dátum és idő esetében.

GetUtcOffset(DateTimeOffset)

Kiszámítja az időzóna és az egyezményes világidő (UTC) időeltolódását vagy különbségét egy adott dátum és idő esetében.

GetUtcOffset(DateTime)

Forrás:
TimeZoneInfo.cs
Forrás:
TimeZoneInfo.cs
Forrás:
TimeZoneInfo.cs
Forrás:
TimeZoneInfo.cs
Forrás:
TimeZoneInfo.cs

Kiszámítja az időzóna és az egyezményes világidő (UTC) időeltolódását vagy különbségét egy adott dátum és idő esetében.

public:
 TimeSpan GetUtcOffset(DateTime dateTime);
public TimeSpan GetUtcOffset(DateTime dateTime);
member this.GetUtcOffset : DateTime -> TimeSpan
Public Function GetUtcOffset (dateTime As DateTime) As TimeSpan

Paraméterek

dateTime
DateTime

Az eltolás meghatározásának dátuma és ideje.

Válaszok

Egy objektum, amely a két időzóna közötti időkülönbséget jelzi.

Példák

Az alábbi példa a metódus különböző időzónákkal és különböző GetUtcOffset(DateTime) tulajdonságértékekkel rendelkező dátumértékekkel való használatát Kind szemlélteti.

using System;

[assembly:CLSCompliant(true)]
namespace TimeZoneInfoCode
{
   public class TimeOffsets
   {
      public static void Main()
      {
         TimeOffsets timeoff = new TimeOffsets();
         TimeZoneInfo cst = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
   
         timeoff.ShowOffset(new DateTime(2006, 6, 12, 11, 0, 0), TimeZoneInfo.Local);
         timeoff.ShowOffset(new DateTime(2007, 11, 4, 1, 0, 0), TimeZoneInfo.Local);
         timeoff.ShowOffset(new DateTime(2006, 12, 10, 15, 0, 0), TimeZoneInfo.Local);
         timeoff.ShowOffset(new DateTime(2007, 3, 11, 2, 30, 0), TimeZoneInfo.Local);
         timeoff.ShowOffset(DateTime.UtcNow, TimeZoneInfo.Local);
         timeoff.ShowOffset(new DateTime(2006, 6, 12, 11, 0, 0), TimeZoneInfo.Utc);
         timeoff.ShowOffset(new DateTime(2007, 11, 4, 1, 0, 0), TimeZoneInfo.Utc);
         timeoff.ShowOffset(new DateTime(2006, 12, 10, 3, 0, 0), TimeZoneInfo.Utc);
         timeoff.ShowOffset(new DateTime(2007, 3, 11, 2, 30, 0), TimeZoneInfo.Utc);
         timeoff.ShowOffset(DateTime.Now, TimeZoneInfo.Utc);
         timeoff.ShowOffset(new DateTime(2006, 6, 12, 11, 0, 0), cst);
         timeoff.ShowOffset(new DateTime(2007, 11, 4, 1, 0, 0), cst);
         timeoff.ShowOffset(new DateTime(2006, 12, 10, 15, 0, 0), cst);
         timeoff.ShowOffset(new DateTime(2007, 3, 11, 2, 30, 0, 0), cst);
         timeoff.ShowOffset(new DateTime(2007, 11, 14, 00, 00, 00, DateTimeKind.Local), cst);
      }
      
      private void ShowOffset(DateTime time, TimeZoneInfo timeZone)
      {
         DateTime convertedTime = time;  
         TimeSpan offset;
         
         if (time.Kind == DateTimeKind.Local && ! timeZone.Equals(TimeZoneInfo.Local)) 
            convertedTime = TimeZoneInfo.ConvertTime(time, TimeZoneInfo.Local, timeZone);
         else if (time.Kind == DateTimeKind.Utc && ! timeZone.Equals(TimeZoneInfo.Utc)) 
            convertedTime = TimeZoneInfo.ConvertTime(time, TimeZoneInfo.Utc, timeZone);         
   
         offset = timeZone.GetUtcOffset(time);
         if (time == convertedTime)
         {
            Console.WriteLine("{0} {1} ", time, 
                              timeZone.IsDaylightSavingTime(time) ? timeZone.DaylightName : timeZone.StandardName);
            Console.WriteLine("   It differs from UTC by {0} hours, {1} minutes.", 
                               offset.Hours, 
                               offset.Minutes);
         }
         else
         {
            Console.WriteLine("{0} {1} ", time, 
                              time.Kind == DateTimeKind.Utc ? "UTC" :  TimeZoneInfo.Local.Id);       
            Console.WriteLine("   converts to {0} {1}.", 
                              convertedTime, 
                              timeZone.Id);
            Console.WriteLine("   It differs from UTC by {0} hours, {1} minutes.", 
                              offset.Hours, offset.Minutes);  
         }
         Console.WriteLine();                                             
      }
   }
}
// The example produces the following output:
//
//       6/12/2006 11:00:00 AM Pacific Daylight Time 
//          It differs from UTC by -7 hours, 0 minutes.
//       
//       11/4/2007 1:00:00 AM Pacific Standard Time 
//          It differs from UTC by -8 hours, 0 minutes.
//       
//       12/10/2006 3:00:00 PM Pacific Standard Time 
//          It differs from UTC by -8 hours, 0 minutes.
//       
//       3/11/2007 2:30:00 AM Pacific Standard Time 
//          It differs from UTC by -8 hours, 0 minutes.
//       
//       2/2/2007 8:35:46 PM UTC 
//          converts to 2/2/2007 12:35:46 PM Pacific Standard Time.
//          It differs from UTC by -8 hours, 0 minutes.
//       
//       6/12/2006 11:00:00 AM UTC 
//          It differs from UTC by 0 hours, 0 minutes.
//       
//       11/4/2007 1:00:00 AM UTC 
//          It differs from UTC by 0 hours, 0 minutes.
//       
//       12/10/2006 3:00:00 AM UTC 
//          It differs from UTC by 0 hours, 0 minutes.
//       
//       3/11/2007 2:30:00 AM UTC 
//          It differs from UTC by 0 hours, 0 minutes.
//       
//       2/2/2007 12:35:46 PM Pacific Standard Time 
//          converts to 2/2/2007 8:35:46 PM UTC.
//          It differs from UTC by 0 hours, 0 minutes.
//       
//       6/12/2006 11:00:00 AM Central Daylight Time 
//          It differs from UTC by -5 hours, 0 minutes.
//       
//       11/4/2007 1:00:00 AM Central Standard Time 
//          It differs from UTC by -6 hours, 0 minutes.
//       
//       12/10/2006 3:00:00 PM Central Standard Time 
//          It differs from UTC by -6 hours, 0 minutes.
//       
//       3/11/2007 2:30:00 AM Central Standard Time 
//          It differs from UTC by -6 hours, 0 minutes.
//       
//       11/14/2007 12:00:00 AM Pacific Standard Time 
//          converts to 11/14/2007 2:00:00 AM Central Standard Time.
//          It differs from UTC by -6 hours, 0 minutes.
open System

let showOffset (time: DateTime) (timeZone: TimeZoneInfo) =
    let convertedTime = 
        match time.Kind with
        | DateTimeKind.Local when not (timeZone.Equals TimeZoneInfo.Local) ->
            TimeZoneInfo.ConvertTime(time, TimeZoneInfo.Local, timeZone)
        | DateTimeKind.Utc when not (timeZone.Equals TimeZoneInfo.Utc) -> 
            TimeZoneInfo.ConvertTime(time, TimeZoneInfo.Utc, timeZone)         
        | _ -> time

    let offset = timeZone.GetUtcOffset time
    if time = convertedTime then
        printfn $"{time} {if timeZone.IsDaylightSavingTime time then timeZone.DaylightName else timeZone.StandardName} "
        printfn $"   It differs from UTC by {offset.Hours} hours, {offset.Minutes} minutes."
    else
        printfn $"""{time} {if time.Kind = DateTimeKind.Utc then "UTC" else TimeZoneInfo.Local.Id} """       
        printfn $"   converts to {convertedTime} {timeZone.Id}." 
        printfn $"   It differs from UTC by {offset.Hours} hours, {offset.Minutes} minutes."  
    printfn ""                                             

let cst = TimeZoneInfo.FindSystemTimeZoneById "Central Standard Time"

showOffset (DateTime(2006, 6, 12, 11, 0, 0)) TimeZoneInfo.Local
showOffset (DateTime(2007, 11, 4, 1, 0, 0)) TimeZoneInfo.Local
showOffset (DateTime(2006, 12, 10, 15, 0, 0)) TimeZoneInfo.Local
showOffset (DateTime(2007, 3, 11, 2, 30, 0)) TimeZoneInfo.Local
showOffset DateTime.UtcNow TimeZoneInfo.Local
showOffset (DateTime(2006, 6, 12, 11, 0, 0)) TimeZoneInfo.Utc
showOffset (DateTime(2007, 11, 4, 1, 0, 0)) TimeZoneInfo.Utc
showOffset (DateTime(2006, 12, 10, 3, 0, 0)) TimeZoneInfo.Utc
showOffset (DateTime(2007, 3, 11, 2, 30, 0)) TimeZoneInfo.Utc
showOffset DateTime.Now TimeZoneInfo.Utc
showOffset (DateTime(2006, 6, 12, 11, 0, 0)) cst
showOffset (DateTime(2007, 11, 4, 1, 0, 0)) cst
showOffset (DateTime(2006, 12, 10, 15, 0, 0)) cst
showOffset (DateTime(2007, 3, 11, 2, 30, 0, 0)) cst
showOffset (DateTime(2007, 11, 14, 00, 00, 00, DateTimeKind.Local)) cst

// The example produces the following output:
//
//       6/12/2006 11:00:00 AM Pacific Daylight Time 
//          It differs from UTC by -7 hours, 0 minutes.
//       
//       11/4/2007 1:00:00 AM Pacific Standard Time 
//          It differs from UTC by -8 hours, 0 minutes.
//       
//       12/10/2006 3:00:00 PM Pacific Standard Time 
//          It differs from UTC by -8 hours, 0 minutes.
//       
//       3/11/2007 2:30:00 AM Pacific Standard Time 
//          It differs from UTC by -8 hours, 0 minutes.
//       
//       2/2/2007 8:35:46 PM UTC 
//          converts to 2/2/2007 12:35:46 PM Pacific Standard Time.
//          It differs from UTC by -8 hours, 0 minutes.
//       
//       6/12/2006 11:00:00 AM UTC 
//          It differs from UTC by 0 hours, 0 minutes.
//       
//       11/4/2007 1:00:00 AM UTC 
//          It differs from UTC by 0 hours, 0 minutes.
//       
//       12/10/2006 3:00:00 AM UTC 
//          It differs from UTC by 0 hours, 0 minutes.
//       
//       3/11/2007 2:30:00 AM UTC 
//          It differs from UTC by 0 hours, 0 minutes.
//       
//       2/2/2007 12:35:46 PM Pacific Standard Time 
//          converts to 2/2/2007 8:35:46 PM UTC.
//          It differs from UTC by 0 hours, 0 minutes.
//       
//       6/12/2006 11:00:00 AM Central Daylight Time 
//          It differs from UTC by -5 hours, 0 minutes.
//       
//       11/4/2007 1:00:00 AM Central Standard Time 
//          It differs from UTC by -6 hours, 0 minutes.
//       
//       12/10/2006 3:00:00 PM Central Standard Time 
//          It differs from UTC by -6 hours, 0 minutes.
//       
//       3/11/2007 2:30:00 AM Central Standard Time 
//          It differs from UTC by -6 hours, 0 minutes.
//       
//       11/14/2007 12:00:00 AM Pacific Standard Time 
//          converts to 11/14/2007 2:00:00 AM Central Standard Time.
//          It differs from UTC by -6 hours, 0 minutes.
Option Strict On

<Assembly: CLSCompliant(True)>
Module TimeOffsets
   Public Sub Main()
      Dim cst As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time")

      ShowOffset(#6/12/2006 11:00AM#, TimeZoneInfo.Local)
      ShowOffset(#11/4/2007 1:00AM#, TimeZoneInfo.Local)
      ShowOffset(#12/10/2006 3:00PM#, TimeZoneInfo.Local)
      ShowOffset(#3/11/2007 2:30:00AM#, TimeZoneInfo.Local)
      ShowOffset(Date.UtcNow, TimeZoneInfo.Local)
      ShowOffset(#6/12/2006 11:00AM#, TimeZoneInfo.Utc)
      ShowOffset(#11/4/2007 1:00AM#, TimeZoneInfo.Utc)
      ShowOffset(#12/10/2006 3:00PM#, TimeZoneInfo.Utc)
      ShowOffset(#3/11/2007 2:30:00AM#, TimeZoneInfo.Utc)
      ShowOffset(Date.Now, TimeZoneInfo.Utc)
      ShowOffset(#6/12/2006 11:00AM#, cst)
      ShowOffset(#11/4/2007 1:00AM#, cst)
      ShowOffset(#12/10/2006 3:00PM#, cst)
      ShowOffset(#3/11/2007 2:30:00AM#, cst)
      ShowOffset(New Date(2007, 11, 14, 00, 00, 00, DateTimeKind.Local), cst)
   End Sub
   
   Private Sub ShowOffset(time As Date, timeZone As TimeZoneInfo)
      Dim convertedTime As Date = time  
      Dim offset As TimeSpan
      
      If time.Kind = DateTimeKind.Local And Not timeZone.Equals(TimeZoneInfo.Local) Then
         convertedTime = TimeZoneInfo.ConvertTime(time, TimeZoneInfo.Local, timeZone)
      ElseIf time.Kind = DateTimeKind.Utc And Not timeZone.Equals(TimeZoneInfo.Utc) Then
         convertedTime = TimeZoneInfo.ConvertTime(time, TimeZoneInfo.Utc, timeZone)         
      End If
      offset = timeZone.GetUtcOffset(time)
      If time = convertedTime Then
         Console.WriteLine("{0} {1} ", time, _
                           IIf(timeZone.IsDaylightSavingTime(time), timeZone.DaylightName, timeZone.StandardName))
         Console.WriteLine("   It differs from UTC by {0} hours, {1} minutes.", _
                            offset.Hours, _
                            offset.Minutes)
      Else
         Console.WriteLine("{0} {1} ", time, _
                           IIf(time.Kind = DateTimeKind.Utc, "UTC", TimeZoneInfo.Local.Id))       
         Console.WriteLine("   converts to {0} {1}.", _
                           convertedTime, _
                           timeZone.Id)
         Console.WriteLine("   It differs from UTC by {0} hours, {1} minutes.", _
                           offset.Hours, offset.Minutes)  
       End If
       Console.WriteLine()                                             
   End Sub
End Module
'
' The example produces the following output:
' 
'       6/12/2006 11:00:00 AM Pacific Daylight Time 
'          It differs from UTC by -7 hours, 0 minutes.
'       
'       11/4/2007 1:00:00 AM Pacific Standard Time 
'          It differs from UTC by -8 hours, 0 minutes.
'       
'       12/10/2006 3:00:00 PM Pacific Standard Time 
'          It differs from UTC by -8 hours, 0 minutes.
'       
'       3/11/2007 2:30:00 AM Pacific Standard Time 
'          It differs from UTC by -8 hours, 0 minutes.
'       
'       2/2/2007 8:35:46 PM UTC 
'          converts to 2/2/2007 12:35:46 PM Pacific Standard Time.
'          It differs from UTC by -8 hours, 0 minutes.
'       
'       6/12/2006 11:00:00 AM UTC 
'          It differs from UTC by 0 hours, 0 minutes.
'       
'       11/4/2007 1:00:00 AM UTC 
'          It differs from UTC by 0 hours, 0 minutes.
'       
'       12/10/2006 3:00:00 AM UTC 
'          It differs from UTC by 0 hours, 0 minutes.
'       
'       3/11/2007 2:30:00 AM UTC 
'          It differs from UTC by 0 hours, 0 minutes.
'       
'       2/2/2007 12:35:46 PM Pacific Standard Time 
'          converts to 2/2/2007 8:35:46 PM UTC.
'          It differs from UTC by 0 hours, 0 minutes.
'       
'       6/12/2006 11:00:00 AM Central Daylight Time 
'          It differs from UTC by -5 hours, 0 minutes.
'       
'       11/4/2007 1:00:00 AM Central Standard Time 
'          It differs from UTC by -6 hours, 0 minutes.
'       
'       12/10/2006 3:00:00 PM Central Standard Time 
'          It differs from UTC by -6 hours, 0 minutes.
'       
'       3/11/2007 2:30:00 AM Central Standard Time 
'          It differs from UTC by -6 hours, 0 minutes.
'       
'       11/14/2007 12:00:00 AM Pacific Standard Time 
'          converts to 11/14/2007 2:00:00 AM Central Standard Time.
'          It differs from UTC by -6 hours, 0 minutes.

Megjegyzések

A visszaadott időtartomány tartalmazza az aktuális időzónára vonatkozó kiigazítási szabályok alkalmazása miatti különbségeket. Különbözik a BaseUtcOffset tulajdonságtól, amely az egyezményes világidő (UTC) és az időzóna standard ideje közötti különbséget adja vissza, ezért nem veszi figyelembe a kiigazítási szabályokat.

Ha a dateTime paraméter tulajdonsága Kind nem felel meg az időzóna-objektumnak, ez a metódus végrehajtja a szükséges átalakítást az eredmény visszaadása előtt. Ez például akkor fordulhat elő, ha a Kind tulajdonság az, DateTimeKind.Local de az időzóna-objektum nem a helyi időzóna. Ha dateTime nem egyértelmű, vagy ha a konvertált idő nem egyértelmű, ez a módszer a kétértelmű időt standard időként értelmezi. Ha dateTime érvénytelen, ez a metódus egy TimeSpan olyan objektumot ad vissza, amely tükrözi az UTC és az időzóna alapideje közötti különbséget.

A TimeZoneInfo.GetUtcOffset(DateTime) metódus működése hasonló az GetUtcOffset osztály metódusához TimeZone .

Lásd még

A következőre érvényes:

GetUtcOffset(DateTimeOffset)

Forrás:
TimeZoneInfo.cs
Forrás:
TimeZoneInfo.cs
Forrás:
TimeZoneInfo.cs
Forrás:
TimeZoneInfo.cs
Forrás:
TimeZoneInfo.cs

Kiszámítja az időzóna és az egyezményes világidő (UTC) időeltolódását vagy különbségét egy adott dátum és idő esetében.

public:
 TimeSpan GetUtcOffset(DateTimeOffset dateTimeOffset);
public TimeSpan GetUtcOffset(DateTimeOffset dateTimeOffset);
member this.GetUtcOffset : DateTimeOffset -> TimeSpan
Public Function GetUtcOffset (dateTimeOffset As DateTimeOffset) As TimeSpan

Paraméterek

dateTimeOffset
DateTimeOffset

Az eltolás meghatározásának dátuma és ideje.

Válaszok

Egy objektum, amely az egyezményes világidő (UTC) és az aktuális időzóna közötti időeltérést jelzi.

Megjegyzések

A visszaadott időtartomány tartalmazza az aktuális időzónára vonatkozó kiigazítási szabályok alkalmazása miatti különbségeket. Különbözik a BaseUtcOffset tulajdonságtól, amely az egyezményes világidő (UTC) és az időzóna standard ideje közötti különbséget adja vissza, ezért nem veszi figyelembe a kiigazítási szabályokat.

A következőre érvényes: