TimeZoneInfo.GetUtcOffset TimeZoneInfo.GetUtcOffset TimeZoneInfo.GetUtcOffset Method

定義

特定の日付と時刻について、このタイム ゾーンでの時刻と世界協定時刻 (UTC) とのオフセットまたは差を計算します。Calculates the offset or difference between the time in this time zone and Coordinated Universal Time (UTC) for a particular date and time.

オーバーロード

GetUtcOffset(DateTime) GetUtcOffset(DateTime) GetUtcOffset(DateTime)

特定の日付と時刻について、このタイム ゾーンでの時刻と世界協定時刻 (UTC) とのオフセットまたは差を計算します。Calculates the offset or difference between the time in this time zone and Coordinated Universal Time (UTC) for a particular date and time.

GetUtcOffset(DateTimeOffset) GetUtcOffset(DateTimeOffset) GetUtcOffset(DateTimeOffset)

特定の日付と時刻について、このタイム ゾーンでの時刻と世界協定時刻 (UTC) とのオフセットまたは差を計算します。Calculates the offset or difference between the time in this time zone and Coordinated Universal Time (UTC) for a particular date and time.

GetUtcOffset(DateTime) GetUtcOffset(DateTime) GetUtcOffset(DateTime)

特定の日付と時刻について、このタイム ゾーンでの時刻と世界協定時刻 (UTC) とのオフセットまたは差を計算します。Calculates the offset or difference between the time in this time zone and Coordinated Universal Time (UTC) for a particular date and time.

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

パラメーター

dateTime
DateTime DateTime DateTime

オフセットの計算対象となる日付と時刻。The date and time to determine the offset for.

戻り値

2 つのタイム ゾーンの時差を示すオブジェクト。An object that indicates the time difference between the two time zones.

次の例では、異なるタイムGetUtcOffset(DateTime)ゾーンと、異なるKindプロパティ値を持つ日付値を使用して、メソッドを使用する方法を示します。The following example illustrates the use of the GetUtcOffset(DateTime) method with different time zones and with date values that have different Kind property values.

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.
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.

注釈

返された期間には、現在のタイムゾーンに調整規則を適用したことによるすべての違いが含まれます。The returned time span includes any differences due to the application of adjustment rules to the current time zone. これはBaseUtcOffsetプロパティとは異なり、世界協定時刻 (UTC) とタイムゾーンの標準時刻の差を返します。したがって、調整規則は考慮されません。It differs from the BaseUtcOffset property, which returns the difference between Coordinated Universal Time (UTC) and the time zone's standard time and, therefore, does not take adjustment rules into account.

dateTimeパラメーターのKindプロパティがタイムゾーンオブジェクトに対応していない場合、このメソッドは結果を返す前に必要な変換を実行します。If the dateTime parameter's Kind property does not correspond to the time zone object, this method performs the necessary conversion before returning a result. たとえば、 KindプロパティがでDateTimeKind.Localあるにもかかわらず、タイムゾーンオブジェクトがローカルタイムゾーンではない場合に、この問題が発生する可能性があります。For example, this can occur if the Kind property is DateTimeKind.Local but the time zone object is not the local time zone. dateTimeあいまいな場合、または変換された時刻があいまいな場合、このメソッドはあいまいな時刻を標準時として解釈します。If dateTime is ambiguous, or if the converted time is ambiguous, this method interprets the ambiguous time as a standard time. dateTime無効な場合、このメソッドはTimeSpan UTC とタイムゾーンの標準時刻の差を反映するオブジェクトを返します。If dateTime is invalid, this method returns a TimeSpan object that reflects the difference between UTC and the time zone's standard time.

メソッドは、 TimeZoneクラスのGetUtcOffsetメソッドに似ています。 TimeZoneInfo.GetUtcOffset(DateTime)The TimeZoneInfo.GetUtcOffset(DateTime) method is similar in operation to the GetUtcOffset method of the TimeZone class.

こちらもご覧ください

GetUtcOffset(DateTimeOffset) GetUtcOffset(DateTimeOffset) GetUtcOffset(DateTimeOffset)

特定の日付と時刻について、このタイム ゾーンでの時刻と世界協定時刻 (UTC) とのオフセットまたは差を計算します。Calculates the offset or difference between the time in this time zone and Coordinated Universal Time (UTC) for a particular date and time.

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

パラメーター

dateTimeOffset
DateTimeOffset DateTimeOffset DateTimeOffset

オフセットの計算対象となる日付と時刻。The date and time to determine the offset for.

戻り値

世界協定時刻 (UTC) と現在のタイム ゾーンとの時差を示すオブジェクト。An object that indicates the time difference between Coordinated Universal Time (UTC) and the current time zone.

注釈

返された期間には、現在のタイムゾーンに調整規則を適用したことによるすべての違いが含まれます。The returned time span includes any differences due to the application of adjustment rules to the current time zone. これはBaseUtcOffsetプロパティとは異なり、世界協定時刻 (UTC) とタイムゾーンの標準時刻の差を返します。したがって、調整規則は考慮されません。It differs from the BaseUtcOffset property, which returns the difference between Coordinated Universal Time (UTC) and the time zone's standard time and, therefore, does not take adjustment rules into account.

適用対象