次の方法で共有


TimeZoneInfo.ConvertTime メソッド

定義

時刻を特定のタイム ゾーンの時刻に変換します。

オーバーロード

ConvertTime(DateTime, TimeZoneInfo)

時刻を特定のタイム ゾーンの時刻に変換します。

ConvertTime(DateTimeOffset, TimeZoneInfo)

時刻を特定のタイム ゾーンの時刻に変換します。

ConvertTime(DateTime, TimeZoneInfo, TimeZoneInfo)

あるタイム ゾーンから別のタイム ゾーンに時刻を変換します。

ConvertTime(DateTime, TimeZoneInfo)

ソース:
TimeZoneInfo.cs
ソース:
TimeZoneInfo.cs
ソース:
TimeZoneInfo.cs

時刻を特定のタイム ゾーンの時刻に変換します。

public:
 static DateTime ConvertTime(DateTime dateTime, TimeZoneInfo ^ destinationTimeZone);
public static DateTime ConvertTime (DateTime dateTime, TimeZoneInfo destinationTimeZone);
static member ConvertTime : DateTime * TimeZoneInfo -> DateTime
Public Shared Function ConvertTime (dateTime As DateTime, destinationTimeZone As TimeZoneInfo) As DateTime

パラメーター

dateTime
DateTime

変換する日付と時刻。

destinationTimeZone
TimeZoneInfo

dateTime を変換するタイム ゾーン。

戻り値

宛先タイム ゾーンの日付と時刻。

例外

dateTime パラメーターの値は無効な時刻を表します。

destinationTimeZone パラメーターの値は nullです。

次の例では、日付と時刻の値の配列を、米国とカナダの東部タイム ゾーンの時刻に変換します。 ソース タイム ゾーンがソース DateTime 値の DateTime.Kind プロパティに依存していることを示します。 また、2010 年 11 月 7 日午前 2 時にソースタイム ゾーンと宛先タイム ゾーンの両方でタイム ゾーン調整が行われるため、ConvertTime メソッドがタイム ゾーン調整を考慮に入れる方法についても説明します。

using System;

public class Example
{
   public static void Main()
   {
      // Define times to be converted.
      DateTime[] times = { new DateTime(2010, 1, 1, 0, 1, 0), 
                           new DateTime(2010, 1, 1, 0, 1, 0, DateTimeKind.Utc), 
                           new DateTime(2010, 1, 1, 0, 1, 0, DateTimeKind.Local),                            
                           new DateTime(2010, 11, 6, 23, 30, 0),
                           new DateTime(2010, 11, 7, 2, 30, 0) };
                              
      // Retrieve the time zone for Eastern Standard Time (U.S. and Canada).
      TimeZoneInfo est; 
      try {
         est = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
      }
      catch (TimeZoneNotFoundException) {
         Console.WriteLine("Unable to retrieve the Eastern Standard time zone.");
         return;
      }
      catch (InvalidTimeZoneException) {
         Console.WriteLine("Unable to retrieve the Eastern Standard time zone.");
         return;
      }   

      // Display the current time zone name.
      Console.WriteLine("Local time zone: {0}\n", TimeZoneInfo.Local.DisplayName);
      
      // Convert each time in the array.
      foreach (DateTime timeToConvert in times)
      {
         DateTime targetTime = TimeZoneInfo.ConvertTime(timeToConvert, est);
         Console.WriteLine("Converted {0} {1} to {2}.", timeToConvert, 
                           timeToConvert.Kind, targetTime);
      }                        
   }
}
// The example displays the following output:
//    Local time zone: (GMT-08:00) Pacific Time (US & Canada)
//    
//    Converted 1/1/2010 12:01:00 AM Unspecified to 1/1/2010 3:01:00 AM.
//    Converted 1/1/2010 12:01:00 AM Utc to 12/31/2009 7:01:00 PM.
//    Converted 1/1/2010 12:01:00 AM Local to 1/1/2010 3:01:00 AM.
//    Converted 11/6/2010 11:30:00 PM Unspecified to 11/7/2010 1:30:00 AM.
//    Converted 11/7/2010 2:30:00 AM Unspecified to 11/7/2010 5:30:00 AM.
open System

// Define times to be converted.
let times = 
    [| DateTime(2010, 1, 1, 0, 1, 0)
       DateTime(2010, 1, 1, 0, 1, 0, DateTimeKind.Utc)
       DateTime(2010, 1, 1, 0, 1, 0, DateTimeKind.Local)
       DateTime(2010, 11, 6, 23, 30, 0)
       DateTime(2010, 11, 7, 2, 30, 0) |]
                        
// Retrieve the time zone for Eastern Standard Time (U.S. and Canada).
try
    let est = TimeZoneInfo.FindSystemTimeZoneById "Eastern Standard Time"

    // Display the current time zone name.
    printfn $"Local time zone: {TimeZoneInfo.Local.DisplayName}\n"

    // Convert each time in the array.
    for timeToConvert in times do
        let targetTime = TimeZoneInfo.ConvertTime(timeToConvert, est)
        printfn $"Converted {timeToConvert} {timeToConvert.Kind} to {targetTime}."
with
| :? TimeZoneNotFoundException ->
    printfn "Unable to retrieve the Eastern Standard time zone."
| :? InvalidTimeZoneException ->
    printfn "Unable to retrieve the Eastern Standard time zone."
// The example displays the following output:
//    Local time zone: (GMT-08:00) Pacific Time (US & Canada)
//    
//    Converted 1/1/2010 12:01:00 AM Unspecified to 1/1/2010 3:01:00 AM.
//    Converted 1/1/2010 12:01:00 AM Utc to 12/31/2009 7:01:00 PM.
//    Converted 1/1/2010 12:01:00 AM Local to 1/1/2010 3:01:00 AM.
//    Converted 11/6/2010 11:30:00 PM Unspecified to 11/7/2010 1:30:00 AM.
//    Converted 11/7/2010 2:30:00 AM Unspecified to 11/7/2010 5:30:00 AM.
Module Example
   Public Sub Main()
      ' Define times to be converted.
      Dim times() As Date = { #1/1/2010 12:01AM#, _
                              DateTime.SpecifyKind(#1/1/2010 12:01AM#, DateTimeKind.Utc), _
                              DateTime.SpecifyKind(#1/1/2010 12:01AM#, DateTimeKind.Local), _
                              #11/6/2010 11:30PM#, #11/7/2010 2:30AM# }
                              
      ' Retrieve the time zone for Eastern Standard Time (U.S. and Canada).
      Dim est As TimeZoneInfo 
      Try
         est = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")
      Catch e As TimeZoneNotFoundException
         Console.WriteLine("Unable to retrieve the Eastern Standard time zone.")
         Exit Sub
      Catch e As InvalidTimeZoneException
         Console.WriteLine("Unable to retrieve the Eastern Standard time zone.")
         Exit Sub
      End Try   

      ' Display the current time zone name.
      Console.WriteLine("Local time zone: {0}", TimeZoneInfo.Local.DisplayName)
      Console.WriteLine()
      
      ' Convert each time in the array.
      For Each timeToConvert As Date In times
         Dim targetTime As Date = TimeZoneInfo.ConvertTime(timeToConvert, est)
         Console.WriteLine("Converted {0} {1} to {2}.", timeToConvert, _
                           timeToConvert.Kind, targetTime)
      Next                        
   End Sub
End Module
' The example displays the following output:
'    Local time zone: (GMT-08:00) Pacific Time (US & Canada)
'    
'    Converted 1/1/2010 12:01:00 AM Unspecified to 1/1/2010 3:01:00 AM.
'    Converted 1/1/2010 12:01:00 AM Utc to 12/31/2009 7:01:00 PM.
'    Converted 1/1/2010 12:01:00 AM Local to 1/1/2010 3:01:00 AM.
'    Converted 11/6/2010 11:30:00 PM Unspecified to 11/7/2010 1:30:00 AM.
'    Converted 11/7/2010 2:30:00 AM Unspecified to 11/7/2010 5:30:00 AM.

注釈

変換を実行するときに、ConvertTime(DateTimeOffset, TimeZoneInfo) メソッドは、destinationTimeZone タイム ゾーンで有効な調整規則を適用します。

ConvertTime(DateTime, TimeZoneInfo) メソッドのこのオーバーロードは、次の表に示すように、dateTime パラメーターの Kind プロパティの値からソース タイム ゾーンを決定します。

Kind プロパティ値 ソース タイム ゾーン メソッドの動作
DateTimeKind.Local Local ローカル時刻を destinationTimeZoneの時刻に変換します。
DateTimeKind.Utc Utc 協定世界時 (UTC) を destinationTimeZoneの時刻に変換します。
DateTimeKind.Unspecified Localであると見なされます。 ローカル時刻を destinationTimeZoneの時刻に変換します。

返される DateTime 値の Kind プロパティは、次の表に示すように設定されます。

条件 Kind プロパティ値が返されました
destinationTimeZoneTimeZoneInfo.Utcです。 DateTimeKind.Utc
destinationTimeZoneTimeZoneInfo.Localです。 DateTimeKind.Local
その他のすべての日付と時刻の値と宛先のタイム ゾーン。 DateTimeKind.Unspecified

dateTime パラメーターの値があいまいな現地時刻である場合は、標準時として解釈されます。 dateTime パラメーターが無効なローカル時刻の場合、このメソッドは ArgumentExceptionをスローします。

dateTime の変換の結果、日付と時刻の値が DateTime.MinValue より前または DateTime.MaxValueより後の場合、このメソッドは、それぞれ DateTime.MinValue または DateTime.MaxValueを返します。

ConvertTimeFromUtc メソッドと ConvertTimeToUtc メソッドを呼び出すことで、UTC との間で変換することもできます。

こちらもご覧ください

  • タイム ゾーン間の時刻変換 を する

適用対象

ConvertTime(DateTimeOffset, TimeZoneInfo)

ソース:
TimeZoneInfo.cs
ソース:
TimeZoneInfo.cs
ソース:
TimeZoneInfo.cs

時刻を特定のタイム ゾーンの時刻に変換します。

public:
 static DateTimeOffset ConvertTime(DateTimeOffset dateTimeOffset, TimeZoneInfo ^ destinationTimeZone);
public static DateTimeOffset ConvertTime (DateTimeOffset dateTimeOffset, TimeZoneInfo destinationTimeZone);
static member ConvertTime : DateTimeOffset * TimeZoneInfo -> DateTimeOffset
Public Shared Function ConvertTime (dateTimeOffset As DateTimeOffset, destinationTimeZone As TimeZoneInfo) As DateTimeOffset

パラメーター

dateTimeOffset
DateTimeOffset

変換する日付と時刻。

destinationTimeZone
TimeZoneInfo

dateTimeOffset を変換するタイム ゾーン。

戻り値

宛先タイム ゾーンの日付と時刻。

例外

destinationTimeZone パラメーターの値は nullです。

次の例では、DateTimeOffset 値の配列を米国とカナダの東部タイム ゾーンの時刻に変換します。 2010 年 11 月 7 日午前 2 時にソースタイム ゾーンと宛先タイム ゾーンの両方でタイム ゾーン調整が行われるため、ConvertTime メソッドがタイム ゾーン調整を考慮に入れる方法を示しています。

using System;

public class Example
{
   public static void Main()
   {
      // Define times to be converted.
      DateTime time1 = new DateTime(2010, 1, 1, 12, 1, 0);
      DateTime time2 = new DateTime(2010, 11, 6, 23, 30, 0);
      DateTimeOffset[] times = { new DateTimeOffset(time1, TimeZoneInfo.Local.GetUtcOffset(time1)),
                                 new DateTimeOffset(time1, TimeSpan.Zero),
                                 new DateTimeOffset(time2, TimeZoneInfo.Local.GetUtcOffset(time2)),
                                 new DateTimeOffset(time2.AddHours(3), TimeZoneInfo.Local.GetUtcOffset(time2.AddHours(3))) };
                              
      // Retrieve the time zone for Eastern Standard Time (U.S. and Canada).
      TimeZoneInfo est; 
      try {
         est = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
      }
      catch (TimeZoneNotFoundException) {
         Console.WriteLine("Unable to retrieve the Eastern Standard time zone.");
         return;
      }
      catch (InvalidTimeZoneException) {
         Console.WriteLine("Unable to retrieve the Eastern Standard time zone.");
         return;
      }   

      // Display the current time zone name.
      Console.WriteLine("Local time zone: {0}\n", TimeZoneInfo.Local.DisplayName);
      
      // Convert each time in the array.
      foreach (DateTimeOffset timeToConvert in times)
      {
         DateTimeOffset targetTime = TimeZoneInfo.ConvertTime(timeToConvert, est);
         Console.WriteLine("Converted {0} to {1}.", timeToConvert, targetTime);
      }                        
   }
}
// The example displays the following output:
//    Local time zone: (GMT-08:00) Pacific Time (US & Canada)
//    
//    Converted 1/1/2010 12:01:00 AM -08:00 to 1/1/2010 3:01:00 AM -05:00.
//    Converted 1/1/2010 12:01:00 AM +00:00 to 12/31/2009 7:01:00 PM -05:00.
//    Converted 11/6/2010 11:30:00 PM -07:00 to 11/7/2010 1:30:00 AM -05:00.
//    Converted 11/7/2010 2:30:00 AM -08:00 to 11/7/2010 5:30:00 AM -05:00.
open System

// Define times to be converted.
let time1 = DateTime(2010, 1, 1, 12, 1, 0)
let time2 = DateTime(2010, 11, 6, 23, 30, 0)
let times = 
    [| DateTimeOffset(time1, TimeZoneInfo.Local.GetUtcOffset time1)
       DateTimeOffset(time1, TimeSpan.Zero)
       DateTimeOffset(time2, TimeZoneInfo.Local.GetUtcOffset time2)
       DateTimeOffset(time2.AddHours 3, TimeZoneInfo.Local.GetUtcOffset(time2.AddHours 3)) |]
                        
// Retrieve the time zone for Eastern Standard Time (U.S. and Canada).
try
    let est = TimeZoneInfo.FindSystemTimeZoneById "Eastern Standard Time"

    // Display the current time zone name.
    printfn $"Local time zone: {TimeZoneInfo.Local.DisplayName}\n"

    // Convert each time in the array.
    for timeToConvert in times do
        let targetTime = TimeZoneInfo.ConvertTime(timeToConvert, est)
        printfn $"Converted {timeToConvert} to {targetTime}."
with
| :? TimeZoneNotFoundException ->
    printfn "Unable to retrieve the Eastern Standard time zone."
| :? InvalidTimeZoneException ->
    printfn "Unable to retrieve the Eastern Standard time zone."
// The example displays the following output:
//    Local time zone: (GMT-08:00) Pacific Time (US & Canada)
//    
//    Converted 1/1/2010 12:01:00 AM -08:00 to 1/1/2010 3:01:00 AM -05:00.
//    Converted 1/1/2010 12:01:00 AM +00:00 to 12/31/2009 7:01:00 PM -05:00.
//    Converted 11/6/2010 11:30:00 PM -07:00 to 11/7/2010 1:30:00 AM -05:00.
//    Converted 11/7/2010 2:30:00 AM -08:00 to 11/7/2010 5:30:00 AM -05:00.
Module Example
   Public Sub Main()
      ' Define times to be converted.
      Dim time1 As Date = #1/1/2010 12:01AM#
      Dim time2 As Date = #11/6/2010 11:30PM#
      Dim times() As DateTimeOffset = { New DateTimeOffset(time1, TimeZoneInfo.Local.GetUtcOffset(time1)), _
                                        New DateTimeOffset(time1, Timespan.Zero), _
                                        New DateTimeOffset(time2, TimeZoneInfo.Local.GetUtcOffset(time2)), _
                                        New DateTimeOffset(time2.AddHours(3), TimeZoneInfo.Local.GetUtcOffset(time2.AddHours(3))) }
                              
      ' Retrieve the time zone for Eastern Standard Time (U.S. and Canada).
      Dim est As TimeZoneInfo 
      Try
         est = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")
      Catch e As TimeZoneNotFoundException
         Console.WriteLine("Unable to retrieve the Eastern Standard time zone.")
         Exit Sub
      Catch e As InvalidTimeZoneException
         Console.WriteLine("Unable to retrieve the Eastern Standard time zone.")
         Exit Sub
      End Try   

      ' Display the current time zone name.
      Console.WriteLine("Local time zone: {0}", TimeZoneInfo.Local.DisplayName)
      Console.WriteLine()
      
      ' Convert each time in the array.
      For Each timeToConvert As DateTimeOffset In times
         Dim targetTime As DateTimeOffset = TimeZoneInfo.ConvertTime(timeToConvert, est)
         Console.WriteLine("Converted {0} to {1}.", timeToConvert, targetTime)
      Next                        
   End Sub
End Module
' The example displays the following output:
'    Local time zone: (GMT-08:00) Pacific Time (US & Canada)
'    
'    Converted 1/1/2010 12:01:00 AM -08:00 to 1/1/2010 3:01:00 AM -05:00.
'    Converted 1/1/2010 12:01:00 AM +00:00 to 12/31/2009 7:01:00 PM -05:00.
'    Converted 11/6/2010 11:30:00 PM -07:00 to 11/7/2010 1:30:00 AM -05:00.
'    Converted 11/7/2010 2:30:00 AM -08:00 to 11/7/2010 5:30:00 AM -05:00.

注釈

変換を実行するときに、ConvertTime(DateTimeOffset, TimeZoneInfo) メソッドは、destinationTimeZone タイム ゾーンで有効な調整規則を適用します。

このオーバーロードは、DateTimeOffset 値を最初のパラメーターとして受け取ることで、ConvertTime メソッドの他のオーバーロードとは異なります。 これにより、日付と時刻は、特定のタイム ゾーンの日付と時刻ではなく、協定世界時 (UTC) からのオフセットとして識別されます。 その結果、dateTimeOffset パラメーターは、あいまいな時刻または無効な時刻を表すことができません。

dateTimeOffset 値を変換先のタイム ゾーンの時刻に変換する場合、このメソッドでは、ターゲット タイム ゾーンで有効な調整規則が考慮されます。

dateTimeOffset の変換の結果、日付と時刻の値が DateTimeOffset.MinValue より前または DateTimeOffset.MaxValueより後の場合、このメソッドは、それぞれ DateTimeOffset.MinValue または DateTimeOffset.MaxValueを返します。

こちらもご覧ください

  • タイム ゾーン間の時刻変換 を する

適用対象

ConvertTime(DateTime, TimeZoneInfo, TimeZoneInfo)

ソース:
TimeZoneInfo.cs
ソース:
TimeZoneInfo.cs
ソース:
TimeZoneInfo.cs

あるタイム ゾーンから別のタイム ゾーンに時刻を変換します。

public:
 static DateTime ConvertTime(DateTime dateTime, TimeZoneInfo ^ sourceTimeZone, TimeZoneInfo ^ destinationTimeZone);
public static DateTime ConvertTime (DateTime dateTime, TimeZoneInfo sourceTimeZone, TimeZoneInfo destinationTimeZone);
static member ConvertTime : DateTime * TimeZoneInfo * TimeZoneInfo -> DateTime
Public Shared Function ConvertTime (dateTime As DateTime, sourceTimeZone As TimeZoneInfo, destinationTimeZone As TimeZoneInfo) As DateTime

パラメーター

dateTime
DateTime

変換する日付と時刻。

sourceTimeZone
TimeZoneInfo

dateTimeのタイム ゾーン。

destinationTimeZone
TimeZoneInfo

dateTime を変換するタイム ゾーン。

戻り値

ソース タイム ゾーンの dateTime パラメーターに対応する、宛先タイム ゾーンの日付と時刻。

例外

dateTime パラメーターの Kind プロパティは Localですが、sourceTimeZone パラメーターは Localと等しくありません。

-又は-

dateTime パラメーターの Kind プロパティは Utcですが、sourceTimeZone パラメーターは Utcと等しくありません。

-又は-

dateTime パラメーターは無効な時刻です (つまり、タイム ゾーンの調整規則のために存在しない時刻を表します)。

sourceTimeZone パラメーターは nullです。

-又は-

destinationTimeZone パラメーターは nullです。

次の例は、ハワイ標準時から現地時刻に変換する ConvertTime(DateTime, TimeZoneInfo, TimeZoneInfo) メソッドの使用を示しています。

DateTime hwTime = new DateTime(2007, 02, 01, 08, 00, 00);
try
{
   TimeZoneInfo hwZone = TimeZoneInfo.FindSystemTimeZoneById("Hawaiian Standard Time");
   Console.WriteLine("{0} {1} is {2} local time.", 
           hwTime, 
           hwZone.IsDaylightSavingTime(hwTime) ? hwZone.DaylightName : hwZone.StandardName, 
           TimeZoneInfo.ConvertTime(hwTime, hwZone, TimeZoneInfo.Local));
}
catch (TimeZoneNotFoundException)
{
   Console.WriteLine("The registry does not define the Hawaiian Standard Time zone.");
}                           
catch (InvalidTimeZoneException)
{
   Console.WriteLine("Registry data on the Hawaiian Standard Time zone has been corrupted.");
}
let hwTime = DateTime(2007, 02, 01, 08, 00, 00)
try
    let hwZone = TimeZoneInfo.FindSystemTimeZoneById "Hawaiian Standard Time"
    printfn $"{hwTime} {if hwZone.IsDaylightSavingTime hwTime then hwZone.DaylightName else hwZone.StandardName} is {TimeZoneInfo.ConvertTime(hwTime, hwZone, TimeZoneInfo.Local)} local time." 
with
| :? TimeZoneNotFoundException ->
    printfn "The registry does not define the Hawaiian Standard Time zone."
| :? InvalidTimeZoneException ->
    printfn "Registry data on the Hawaiian Standard Time zone has been corrupted."
Dim hwTime As Date = #2/01/2007 8:00:00 AM#
Try
   Dim hwZone As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Hawaiian Standard Time")
   Console.WriteLine("{0} {1} is {2} local time.", _
                     hwTime, _
                     IIf(hwZone.IsDaylightSavingTime(hwTime), hwZone.DaylightName, hwZone.StandardName), _
                     TimeZoneInfo.ConvertTime(hwTime, hwZone, TimeZoneInfo.Local))
Catch e As TimeZoneNotFoundException
   Console.WriteLine("The registry does not define the Hawaiian Standard Time zone.")
Catch e As InvalidTimeZoneException
   Console.WriteLine("Registry data on the Hawaiian Standard Time zone has been corrupted.")
End Try

注釈

変換を実行するときに、ConvertTime メソッドは、destinationTimeZone タイム ゾーンで有効な調整規則を適用します。

次の表に示すように、dateTime パラメーターの Kind プロパティの値は、sourceTimeZone パラメーターに対応している必要があります。

DateTime.Kind 値 sourceTimeZone 値 メソッドの動作
DateTimeKind.Utc TimeZoneInfo.Utcに等しい。 dateTime を宛先タイム ゾーンの時刻に変換します。
DateTimeKind.Utc TimeZoneInfo.Utcと等しくありません。 ArgumentExceptionをスローします。
DateTimeKind.Local TimeZoneInfo.Localに等しい。 dateTime を宛先タイム ゾーンの時刻に変換します。
DateTimeKind.Local TimeZoneInfo.Localと等しくありません。 ArgumentExceptionをスローします。
DateTimeKind.Unspecified 任意。 dateTime を宛先タイム ゾーンの時刻に変換します。

ConvertTimeFromUtc メソッドと ConvertTimeToUtc メソッドを呼び出すことで、協定世界時 (UTC) との間で変換することもできます。

返される DateTime 値の Kind プロパティは、次の表に示すように設定されます。

条件 Kind プロパティ値が返されました
destinationTimeZone 引数は TimeZoneInfo.Utcです。 DateTimeKind.Utc
destinationTimeZone 引数は TimeZoneInfo.Localです。 DateTimeKind.Local
その他のすべての日付と時刻の値、ソース タイム ゾーン、および宛先タイム ゾーン。 DateTimeKind.Unspecified

dateTime パラメーターの値がソース タイム ゾーンのあいまいな時刻である場合は、標準時刻として解釈されます。 dateTime パラメーターがソース タイム ゾーンの無効な時刻である場合、このメソッドは ArgumentExceptionをスローします。

dateTime の変換の結果、日付と時刻の値が DateTime.MinValue より前または DateTime.MaxValueより後の場合、このメソッドは、それぞれ DateTime.MinValue または DateTime.MaxValueを返します。

ConvertTime(DateTime, TimeZoneInfo, TimeZoneInfo) メソッドは、dateTime 引数の DateTime.Kind プロパティが DateTimeKind.Local されているが、sourceTimeZone 引数が TimeZoneInfo.Localされていない場合、ArgumentException 例外をスローします。 ソース タイム ゾーンがローカル タイム ゾーンかユニバーサル タイム ゾーンかを判断するために、メソッドは、Equals(TimeZoneInfo) メソッドで値の等価性をテストするのではなく、参照の等価性をテストします。 ローカル タイム ゾーンを表し、FindSystemTimeZoneById メソッドを呼び出して取得される TimeZoneInfo オブジェクトは、TimeZoneInfo.Localとの参照の等価性を持たないことに注意してください。 さらに、ローカル タイム ゾーンまたはユニバーサル タイム ゾーンを表し、GetSystemTimeZones メソッドによって返されるコレクションを反復処理して取得される TimeZoneInfo オブジェクトは、TimeZoneInfo.Local または TimeZoneInfo.Utcとの参照の等価性を持っていません。 別の方法として、ConvertTimeBySystemTimeZoneId(DateTime, String, String) メソッドを呼び出すことができます。

こちらもご覧ください

適用対象