TimeZoneInfo.ConvertTime Método

Definição

Converte uma hora para a hora em um fuso horário específico.

Sobrecargas

ConvertTime(DateTime, TimeZoneInfo)

Converte uma hora para a hora em um fuso horário específico.

ConvertTime(DateTimeOffset, TimeZoneInfo)

Converte uma hora para a hora em um fuso horário específico.

ConvertTime(DateTime, TimeZoneInfo, TimeZoneInfo)

Converte um horário de um fuso horário para outro.

ConvertTime(DateTime, TimeZoneInfo)

Origem:
TimeZoneInfo.cs
Origem:
TimeZoneInfo.cs
Origem:
TimeZoneInfo.cs

Converte uma hora para a hora em um fuso horário específico.

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

Parâmetros

dateTime
DateTime

A data e a hora a serem convertidas.

destinationTimeZone
TimeZoneInfo

O fuso horário para o qual converter dateTime.

Retornos

A data e a hora no fuso horário de destino.

Exceções

O valor do parâmetro dateTime representa um tempo inválido.

O valor do parâmetro destinationTimeZone é null.

Exemplos

O exemplo a seguir converte uma matriz de valores de data e hora em horários no fuso horário oriental dos EUA e canadá. Ele mostra que o fuso horário de origem depende da propriedade DateTime.Kind do valor de DateTime de origem. Ele também ilustra que o método ConvertTime leva em conta os ajustes de fuso horário, pois ocorre um ajuste de fuso horário nos fusos horários de origem e de destino às 2:00 da manhã de 7 de novembro de 2010.

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.

Comentários

Ao executar a conversão, o método ConvertTime(DateTimeOffset, TimeZoneInfo) aplica todas as regras de ajuste em vigor no fuso horário destinationTimeZone.

Essa sobrecarga do método ConvertTime(DateTime, TimeZoneInfo) determina o fuso horário de origem do valor da propriedade Kind do parâmetro dateTime, como mostra a tabela a seguir.

Valor da propriedade Kind Fuso horário de origem Comportamento do método
DateTimeKind.Local Local Converte a hora local na hora em destinationTimeZone.
DateTimeKind.Utc Utc Converte UTC (Tempo Universal Coordenado) no tempo em destinationTimeZone.
DateTimeKind.Unspecified Supõe-se que seja Local. Converte a hora local na hora em destinationTimeZone.

A propriedade Kind do valor de DateTime retornado é definida conforme mostrado na tabela a seguir.

Condição Valor da propriedade Kind retornado
O destinationTimeZone é TimeZoneInfo.Utc. DateTimeKind.Utc
O destinationTimeZone é TimeZoneInfo.Local. DateTimeKind.Local
Todos os outros valores de data e hora e fusos horários de destino. DateTimeKind.Unspecified

Se o valor do parâmetro dateTime for uma hora local ambígua, ele será interpretado como uma hora padrão. Se o parâmetro dateTime for uma hora local inválida, esse método gerará um ArgumentException.

Se a conversão de dateTime resultar em um valor de data e hora anterior a DateTime.MinValue ou posterior a DateTime.MaxValue, esse método retornará DateTime.MinValue ou DateTime.MaxValue, respectivamente.

Você também pode converter de ou para UTC chamando os métodos ConvertTimeFromUtc e ConvertTimeToUtc.

Confira também

Aplica-se a

ConvertTime(DateTimeOffset, TimeZoneInfo)

Origem:
TimeZoneInfo.cs
Origem:
TimeZoneInfo.cs
Origem:
TimeZoneInfo.cs

Converte uma hora para a hora em um fuso horário específico.

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

Parâmetros

dateTimeOffset
DateTimeOffset

A data e a hora a serem convertidas.

destinationTimeZone
TimeZoneInfo

O fuso horário para o qual converter dateTimeOffset.

Retornos

A data e a hora no fuso horário de destino.

Exceções

O valor do parâmetro destinationTimeZone é null.

Exemplos

O exemplo a seguir converte uma matriz de valores DateTimeOffset em horários no fuso horário oriental dos EUA e canadá. Ele ilustra que o método ConvertTime leva em conta os ajustes de fuso horário, pois ocorre um ajuste de fuso horário nos fusos horários de origem e de destino às 2h de 7 de novembro de 2010.

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.

Comentários

Ao executar a conversão, o método ConvertTime(DateTimeOffset, TimeZoneInfo) aplica todas as regras de ajuste em vigor no fuso horário destinationTimeZone.

Essa sobrecarga difere das outras sobrecargas do método ConvertTime aceitando um valor DateTimeOffset como seu primeiro parâmetro. Isso identifica a data e a hora como um deslocamento do UTC (Tempo Universal Coordenado) em vez de como a data e a hora em um fuso horário específico. Como resultado, o parâmetro dateTimeOffset não pode representar um tempo ambíguo ou um tempo inválido.

Ao converter o valor dateTimeOffset para o horário no fuso horário de destino, esse método leva em conta todas as regras de ajuste em vigor no fuso horário de destino.

Se a conversão de dateTimeOffset resultar em um valor de data e hora anterior a DateTimeOffset.MinValue ou posterior a DateTimeOffset.MaxValue, esse método retornará DateTimeOffset.MinValue ou DateTimeOffset.MaxValue, respectivamente.

Confira também

Aplica-se a

ConvertTime(DateTime, TimeZoneInfo, TimeZoneInfo)

Origem:
TimeZoneInfo.cs
Origem:
TimeZoneInfo.cs
Origem:
TimeZoneInfo.cs

Converte um horário de um fuso horário para outro.

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

Parâmetros

dateTime
DateTime

A data e a hora a serem convertidas.

sourceTimeZone
TimeZoneInfo

O fuso horário de dateTime.

destinationTimeZone
TimeZoneInfo

O fuso horário para o qual converter dateTime.

Retornos

A data e hora no fuso horário de destino que corresponde ao parâmetro dateTime no fuso horário de origem.

Exceções

A propriedade Kind do parâmetro dateTime é Local, mas o parâmetro sourceTimeZone não é igual a Local.

-ou-

A propriedade Kind do parâmetro dateTime é Utc, mas o parâmetro sourceTimeZone não é igual a Utc.

-ou-

O parâmetro dateTime é uma hora inválida (ou seja, representa um horário que não existe devido às regras de ajuste de um fuso horário).

O parâmetro sourceTimeZone é null.

-ou-

O parâmetro destinationTimeZone é null.

Exemplos

O exemplo a seguir ilustra o uso do método ConvertTime(DateTime, TimeZoneInfo, TimeZoneInfo) para converter de Hora Padrão Havaiana para hora local.

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

Comentários

Ao executar a conversão, o método ConvertTime aplica todas as regras de ajuste em vigor no fuso horário destinationTimeZone.

O valor da propriedade Kind do parâmetro dateTime deve corresponder ao parâmetro sourceTimeZone, como mostra a tabela a seguir.

Valor DateTime.Kind valor sourceTimeZone Comportamento do método
DateTimeKind.Utc É igual a TimeZoneInfo.Utc. Converte dateTime no horário do fuso horário de destino.
DateTimeKind.Utc Não é igual a TimeZoneInfo.Utc. Lança um ArgumentException.
DateTimeKind.Local É igual a TimeZoneInfo.Local. Converte dateTime no horário do fuso horário de destino.
DateTimeKind.Local Não é igual a TimeZoneInfo.Local. Lança um ArgumentException.
DateTimeKind.Unspecified Qualquer. Converte dateTime no horário do fuso horário de destino.

Você também pode converter de ou para o UTC (Tempo Universal Coordenado) chamando os métodos ConvertTimeFromUtc e ConvertTimeToUtc.

A propriedade Kind do valor de DateTime retornado é definida conforme mostrado na tabela a seguir.

Condição Valor da propriedade Kind retornado
O argumento destinationTimeZone é TimeZoneInfo.Utc. DateTimeKind.Utc
O argumento destinationTimeZone é TimeZoneInfo.Local. DateTimeKind.Local
Todos os outros valores de data e hora, fusos horários de origem e fusos horários de destino. DateTimeKind.Unspecified

Se o valor do parâmetro dateTime for um horário ambíguo no fuso horário de origem, ele será interpretado como um horário padrão. Se o parâmetro dateTime for uma hora inválida no fuso horário de origem, esse método gerará um ArgumentException.

Se a conversão de dateTime resultar em um valor de data e hora anterior a DateTime.MinValue ou posterior a DateTime.MaxValue, esse método retornará DateTime.MinValue ou DateTime.MaxValue, respectivamente.

O método ConvertTime(DateTime, TimeZoneInfo, TimeZoneInfo) gera uma exceção ArgumentException se a propriedade DateTime.Kind do argumento dateTime for DateTimeKind.Local mas o argumento sourceTimeZone não for TimeZoneInfo.Local. Para determinar se o fuso horário de origem é o fuso horário local ou o fuso horário universal, o método testa a igualdade de referência em vez de testar a igualdade de valor com o método Equals(TimeZoneInfo). Observe que TimeZoneInfo objetos que representam o fuso horário local e que são recuperados chamando o método FindSystemTimeZoneById não têm igualdade referencial com TimeZoneInfo.Local. Além disso, TimeZoneInfo objetos que representam o fuso horário local ou universal e que são recuperados pela iteração da coleção retornada pelo método GetSystemTimeZones não têm igualdade referencial com TimeZoneInfo.Local ou TimeZoneInfo.Utc. Como alternativa, você pode chamar o método ConvertTimeBySystemTimeZoneId(DateTime, String, String).

Confira também

Aplica-se a