英語で読む

次の方法で共有


DateTimeOffset.ToOffset(TimeSpan) メソッド

定義

現在の DateTimeOffset オブジェクトの値を、オフセット値で指定された日時に変換します。

C#
public DateTimeOffset ToOffset(TimeSpan offset);

パラメーター

offset
TimeSpan

変換後の DateTimeOffset 値のオフセット。

戻り値

元の DateTimeOffset オブジェクトと等しく (つまり、ToUniversalTime() メソッドで同じ特定の時点が返される)、かつ、Offset プロパティが offset に設定されているオブジェクト。

例外

結果 DateTimeOffset のオブジェクトの DateTime 値は 、DateTimeOffset.MinValue より前です。

\- または -

結果のDateTimeOffsetオブジェクトの値は、DateTimeDateTimeOffset.MaxValue より後です。

offset が -14 時間未満です。

- または -

offset が 14 時間を超えています。

次の例は、 メソッドを使用 ToOffset して、オブジェクトを DateTimeOffset 別のオフセットを DateTimeOffset 持つオブジェクトに変換する方法を示しています。

C#
using System;

public class DateTimeOffsetConversion
{
   private static DateTimeOffset sourceTime;

   public static void Main()
   {
      DateTimeOffset targetTime;
      sourceTime = new DateTimeOffset(2007, 9, 1, 9, 30, 0,
                                      new TimeSpan(-5, 0, 0));

      // Convert to same time (return sourceTime unchanged)
      targetTime = sourceTime.ToOffset(new TimeSpan(-5, 0, 0));
      ShowDateAndTimeInfo(targetTime);

      // Convert to UTC (0 offset)
      targetTime = sourceTime.ToOffset(TimeSpan.Zero);
      ShowDateAndTimeInfo(targetTime);

      // Convert to 8 hours behind UTC
      targetTime = sourceTime.ToOffset(new TimeSpan(-8, 0, 0));
      ShowDateAndTimeInfo(targetTime);

      // Convert to 3 hours ahead of UTC
      targetTime = sourceTime.ToOffset(new TimeSpan(3, 0, 0));
      ShowDateAndTimeInfo(targetTime);
   }

   private static void ShowDateAndTimeInfo(DateTimeOffset newTime)
   {
      Console.WriteLine("{0} converts to {1}", sourceTime, newTime);
      Console.WriteLine("{0} and {1} are equal: {2}",
                        sourceTime, newTime, sourceTime.Equals(newTime));
      Console.WriteLine("{0} and {1} are identical: {2}",
                        sourceTime, newTime,
                        sourceTime.EqualsExact(newTime));
      Console.WriteLine();
   }
}
//
// The example displays the following output:
//    9/1/2007 9:30:00 AM -05:00 converts to 9/1/2007 9:30:00 AM -05:00
//    9/1/2007 9:30:00 AM -05:00 and 9/1/2007 9:30:00 AM -05:00 are equal: True
//    9/1/2007 9:30:00 AM -05:00 and 9/1/2007 9:30:00 AM -05:00 are identical: True
//
//    9/1/2007 9:30:00 AM -05:00 converts to 9/1/2007 2:30:00 PM +00:00
//    9/1/2007 9:30:00 AM -05:00 and 9/1/2007 2:30:00 PM +00:00 are equal: True
//    9/1/2007 9:30:00 AM -05:00 and 9/1/2007 2:30:00 PM +00:00 are identical: False
//
//    9/1/2007 9:30:00 AM -05:00 converts to 9/1/2007 6:30:00 AM -08:00
//    9/1/2007 9:30:00 AM -05:00 and 9/1/2007 6:30:00 AM -08:00 are equal: True
//    9/1/2007 9:30:00 AM -05:00 and 9/1/2007 6:30:00 AM -08:00 are identical: False
//
//    9/1/2007 9:30:00 AM -05:00 converts to 9/1/2007 5:30:00 PM +03:00
//    9/1/2007 9:30:00 AM -05:00 and 9/1/2007 5:30:00 PM +03:00 are equal: True
//    9/1/2007 9:30:00 AM -05:00 and 9/1/2007 5:30:00 PM +03:00 are identical: False

注釈

メソッドは ToOffset 、 メソッドを呼び出す代わりに使用します TimeZoneInfo.ConvertTime(DateTimeOffset, TimeZoneInfo) 。 協定世界時 (UTC) からのタイム ゾーンのオフセットがわかっている場合に、あるタイム ゾーンから別のタイム ゾーンへの単純な変換を実行する場合に便利です。 ただし、元 DateTimeOffset のオブジェクトも、メソッド呼び出しによって返される新しい DateTimeOffset オブジェクトも、特定のタイム ゾーンに明確に関連していないため、メソッドは変換にタイム ゾーン調整ルールを適用しません。

適用対象

製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0