TimeZoneInfo.FindSystemTimeZoneById(String) Método

Definição

Cria uma instância de um novo objeto TimeZoneInfo, com base em seu identificador.Instantiates a new TimeZoneInfo object based on its identifier.

public:
 static TimeZoneInfo ^ FindSystemTimeZoneById(System::String ^ id);
public static TimeZoneInfo FindSystemTimeZoneById (string id);
static member FindSystemTimeZoneById : string -> TimeZoneInfo
Public Shared Function FindSystemTimeZoneById (id As String) As TimeZoneInfo

Parâmetros

id
String

O identificador do fuso horário, que corresponde à propriedade Id.The time zone identifier, which corresponds to the Id property.

Retornos

Um objeto cujo identificador é o valor do parâmetro id.An object whose identifier is the value of the id parameter.

Exceções

O sistema não tem memória suficiente para manter informações sobre o fuso horário.The system does not have enough memory to hold information about the time zone.

O parâmetro id é null.The id parameter is null.

O identificador de fuso horário especificado por id não foi encontrado.The time zone identifier specified by id was not found. Isso significa que um identificador de fuso horário cujo nome corresponde ao id não existe ou que o identificador existe, mas não contém nenhum dado de fuso horário.This means that a time zone identifier whose name matches id does not exist, or that the identifier exists but does not contain any time zone data.

O processo não tem as permissões necessárias para ler a partir da chave do Registro que contém as informações de fuso horário.The process does not have the permissions required to read from the registry key that contains the time zone information.

O identificador de fuso horário foi encontrado, mas os dados do Registro estão corrompidos.The time zone identifier was found, but the registry data is corrupted.

Exemplos

O exemplo a seguir usa FindSystemTimeZoneById o método para recuperar o fuso horário padrão de Tokyo.The following example uses the FindSystemTimeZoneById method to retrieve the Tokyo Standard Time zone. Esse TimeZoneInfo objeto é usado para converter a hora local para a hora em Tokyo e para determinar se é hora padrão de Tokyo ou horário de Verão de Tokyo.This TimeZoneInfo object is then used to convert the local time to the time in Tokyo and to determine whether it is Tokyo Standard Time or Tokyo Daylight Time.

using System;

public class Example
{
   public static void Main()
   {
      // Get time in local time zone 
      DateTime thisTime = DateTime.Now;
      Console.WriteLine("Time in {0} zone: {1}", TimeZoneInfo.Local.IsDaylightSavingTime(thisTime) ?
                        TimeZoneInfo.Local.DaylightName : TimeZoneInfo.Local.StandardName, thisTime);
      Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(thisTime, TimeZoneInfo.Local));
      // Get Tokyo Standard Time zone
      TimeZoneInfo tst = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
      DateTime tstTime = TimeZoneInfo.ConvertTime(thisTime, TimeZoneInfo.Local, tst);      
      Console.WriteLine("Time in {0} zone: {1}", tst.IsDaylightSavingTime(tstTime) ?
                        tst.DaylightName : tst.StandardName, tstTime);
      Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(tstTime, tst));
   }
}
// The example displays output like the following when run on a system in the
// U.S. Pacific Standard Time zone:
//       Time in Pacific Standard Time zone: 12/6/2013 10:57:51 AM
//          UTC Time: 12/6/2013 6:57:51 PM
//       Time in Tokyo Standard Time zone: 12/7/2013 3:57:51 AM
//          UTC Time: 12/6/2013 6:57:51 PM
Module Example
   Public Sub Main()
      ' Get time in local time zone 
      Dim thisTime As Date = Date.Now
      Console.WriteLine("Time in {0} zone: {1}", IIf(TimeZoneInfo.Local.IsDaylightSavingTime(thisTime), 
                        TimeZoneInfo.Local.DaylightName, TimeZoneInfo.Local.StandardName), thisTime)
      Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(thisTime, TimeZoneInfo.Local))
      ' Get Tokyo Standard Time zone
      Dim tst As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time")
      Dim tstTime As Date = TimeZoneInfo.ConvertTime(thisTime, TimeZoneInfo.Local, tst)      
      Console.WriteLine("Time in {0} zone: {1}", IIf(tst.IsDaylightSavingTime(tstTime), 
                        tst.DaylightName, tst.StandardName), tstTime)
      Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(tstTime, tst))
   End Sub
End Module
' The example displays output like the following when run on a system in the U.S.
' Pacific Standard Time zone:
'    Time in Pacific Standard Time zone: 12/6/2013 10:57:51 AM
'       UTC Time: 12/6/2013 6:57:51 PM
'    Time in Tokyo Standard Time zone: 12/7/2013 3:57:51 AM
'       UTC Time: 12/6/2013 6:57:51 PM

Comentários

O id parâmetro deve corresponder exatamente ao identificador do fuso horário, mas não no caso, para que uma correspondência bem-sucedida ocorra; ou seja, a comparação de com identificadores id de fuso horário não diferencia maiúsculas de minúsculas.The id parameter must correspond exactly to the time zone's identifier in length, but not in case, for a successful match to occur; that is, the comparison of id with time zone identifiers is case-insensitive. Se você quiser recuperar objetos de fuso horário com base em correspondências parciais, poderá escrever procedimentos personalizados que funcionem com a coleção de TimeZoneInfo objetos somente leitura retornada GetSystemTimeZones pelo método.If you want to retrieve time zone objects based on partial matches, you can write custom procedures that work with the read-only collection of TimeZoneInfo objects returned by the GetSystemTimeZones method.

Em sistemas Windows, FindSystemTimeZoneById o tenta corresponder id aos nomes de subchave da ramificação de zonas HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones do registro.On Windows systems, FindSystemTimeZoneById tries to match id to the subkey names of the HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones branch of the registry. No Linux e no macOS, ele usa as informações de fuso horário disponíveis na biblioteca do ICU.On Linux and macOS, it uses time zone information available in the ICU Library. Se o registro ou a biblioteca não tiver as informações para o fuso horário desejado, você poderá criar um fuso horário específico chamando uma das sobrecargas do CreateCustomTimeZone método ou chamando FromSerializedString para desserializar um TimeZoneInfo objeto que representa o fuso horário necessário.If the registry or the library does not have the information for the time zone you desire, you can create a particular time zone either by calling one of the overloads of the CreateCustomTimeZone method or by calling FromSerializedString to deserialize a TimeZoneInfo object that represents the required time zone. No entanto, os fusos horários criados por essas chamadas de método não são de tempo definido pelo sistema FindSystemTimeZoneById e não podem ser recuperados usando o método.However, time zones created by these method calls are not system-defined time and cannot be retrieved using the FindSystemTimeZoneById method. Esses fusos horários personalizados podem ser acessados somente por meio da referência CreateCustomTimeZone de FromSerializedString objeto retornada pela chamada de método ou.These custom time zones can be accessed only through the object reference returned by the CreateCustomTimeZone or FromSerializedString method call.

Esse método retorna uma nova TimeZoneInfo instância para cada chamada de método; ele não retorna objetos armazenados em cache.This method returns a new TimeZoneInfo instance for each method call; it does not return cached objects. Isso pode afetar o desempenho em aplicativos que chamam FindSystemTimeZoneById o método repetidamente com o mesmo identificador.This may impact performance in applications that call the FindSystemTimeZoneById method repeatedly with the same identifier.

Aplica-se a

Veja também