次の方法で共有


TimeZone.ToLocalTime(DateTime) メソッド

定義

指定した日付と時刻の値に対応する現地時間を返します。

public:
 virtual DateTime ToLocalTime(DateTime time);
public virtual DateTime ToLocalTime (DateTime time);
abstract member ToLocalTime : DateTime -> DateTime
override this.ToLocalTime : DateTime -> DateTime
Public Overridable Function ToLocalTime (time As DateTime) As DateTime

パラメーター

time
DateTime

世界協定時刻 (UTC: Coordinated Universal Time)。

戻り値

time に対応する現地時間の値を持つ DateTime オブジェクト。

注釈

次の表は、 パラメーターとこのメソッドによって返される値のDateTime関係timeを示しています。

time パラメーター 動作 戻り値
協定世界時 (UTC) 時刻 (DateTimeKind.Utc)。 時刻を UTC から現地時刻に変換します。 time に対応する現地時間の値を持つ DateTime オブジェクト。
現地時刻 (DateTimeKind.Local)。 変換は必要ありません。 パラメーターでtime表されるのと同じDateTime値。
指定されていない時刻 (DateTimeKind.Unspecified)。 時刻が UTC であることを前提とし、UTC から現地時刻に変換します。 time に対応する現地時間の値を持つ DateTime オブジェクト。

ローカル タイム ゾーンで夏時間が観察される場合は、 ToLocalTime 変換の実行時に現在の調整規則が に time 適用されます。

注意

メソッドは ToLocalTime 、ローカル タイム ゾーンの現在の夏時間調整規則のみを認識します。 その結果、最新の調整規則が有効な期間中にのみ、特定の UTC 時刻に対応する現地時刻を正確に返すことができます。 が以前の調整規則の対象となった履歴の日付と時刻の値である場合、不正確な結果が返される可能性 time があります。

メソッドは ToLocalTime 、 パラメーターが に設定された TimeZoneInfo.ConvertTimeFromUtc メソッド destinationTimeZoneTimeZoneInfo.Local対応します。 可能な限り、 メソッドを使用します TimeZoneInfo.ConvertTimeFromUtc

注意 (継承者)

必須ではありませんが、ほとんどの場合、.NET Framework バージョン 2.0 で実行されている派生クラスは、このメソッドの既定の実装をオーバーライドする必要があります。 .NET Framework バージョン 1.0 および 1.1 では、 メソッドが メソッドをGetUtcOffset(DateTime)呼び出し、ToLocalTime現地時刻を返すときに夏時間用に調整されました。 ただし、.NET Framework 2.0 以降では、既定の実装の動作は パラメーターの time プロパティによって異なりますKind。 その値が の場合、このメソッドは Local変更せずにを返します time 。 値が または UnspecifiedUtc場合、このメソッドは UTC を想定timeし、 メソッドを呼び出さずにローカル システム時刻にGetUtcOffset(DateTime)変換します。

次のコードは、 メソッドの既定の実装の単純なオーバーライドを ToLocalTime 提供します。 このコードでは、 変数は internalTimeZone クラスのプライベート インスタンスを TimeZone 表します。

public override DateTime ToLocalTime(DateTime time)
{
   if (time.Kind == DateTimeKind.Local)
   {
      return time;
   }
   else if (time.Kind == DateTimeKind.Utc)
   {
      DateTime returnTime = new DateTime(time.Ticks, DateTimeKind.Local);
      returnTime += this.GetUtcOffset(returnTime);
      if (internalTimeZone.IsDaylightSavingTime(returnTime))
         returnTime -= new TimeSpan(1, 0, 0);
      return returnTime;
   }      
   else
   {
      throw new ArgumentException("The source time zone cannot be determined.");
   }      
}
Public Overrides Function ToLocalTime(time As Date) As Date
   If time.Kind = DateTimeKind.Local Then
      Return time
   ElseIf time.Kind = DateTimeKind.Utc Then
      Dim returnTime As New Date(time.Ticks, DateTimeKind.Local)
      returnTime += me.GetUtcOffset(returnTime)
      if internalTimeZone.IsDaylightSavingTime(returnTime) Then
         returnTime -= New TimeSpan(1, 0, 0)
      End If
      Return returnTime      
   Else
      Throw New ArgumentException("The source time zone cannot be determined.")
   End If      
End Function

適用対象

こちらもご覧ください