TimeZoneInfo.FindSystemTimeZoneById(String) Metodo

Definizione

Crea un'istanza di un nuovo oggetto TimeZoneInfo in base al relativo identificatore.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

Parametri

id
String

Identificatore del fuso orario, corrispondente alla proprietà Id.The time zone identifier, which corresponds to the Id property.

Restituisce

Oggetto il cui identificatore è il valore del parametro id.An object whose identifier is the value of the id parameter.

Eccezioni

La memoria del sistema è insufficiente per contenere le informazioni sul fuso orario.The system does not have enough memory to hold information about the time zone.

Il valore del parametro id è null.The id parameter is null.

Impossibile trovare l'identificatore del fuso orario specificato da id.The time zone identifier specified by id was not found. Questo significa che non esiste un identificatore del fuso orario il cui nome corrisponde a id o che l'identificatore esiste ma non contiene dati sul fuso orario.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.

Il processo non ha le autorizzazioni necessarie per leggere dalla chiave del Registro di sistema che contiene le informazioni sul fuso orario.The process does not have the permissions required to read from the registry key that contains the time zone information.

L'identificatore del fuso orario è stato trovato, ma i dati del Registro di sistema sono danneggiati.The time zone identifier was found, but the registry data is corrupted.

Esempi

Nell'esempio seguente viene usato FindSystemTimeZoneById il metodo per recuperare il fuso orario di Tokyo standard.The following example uses the FindSystemTimeZoneById method to retrieve the Tokyo Standard Time zone. Questo TimeZoneInfo oggetto viene quindi utilizzato per convertire l'ora locale nell'ora di Tokyo e per determinare se si tratta dell'ora solare Tokyo o dell'ora legale di 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

Commenti

Il id parametro deve corrispondere esattamente alla lunghezza dell'identificatore del fuso orario, ma non nel caso in cui si verifichi una corrispondenza corretta; ovvero, il confronto tra gli identificatori dei id fusi orari non fa distinzione tra maiuscole e minuscole.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 si desidera recuperare gli oggetti del fuso orario in base a corrispondenze parziali, è possibile scrivere procedure personalizzate che funzionano con la raccolta TimeZoneInfo di sola lettura di GetSystemTimeZones oggetti restituiti dal metodo.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.

Nei sistemi Windows, FindSystemTimeZoneById tenta di trovare id una corrispondenza con i nomi delle sottochiavi del ramo HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones Zones del registro di sistema.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. In Linux e macOS usa le informazioni sul fuso orario disponibili nella libreria di ICU.On Linux and macOS, it uses time zone information available in the ICU Library. Se il registro di sistema o la libreria non contiene le informazioni relative al fuso orario desiderato, è possibile creare un determinato fuso orario chiamando uno degli overload del CreateCustomTimeZone metodo o chiamando FromSerializedString per deserializzare un TimeZoneInfo oggetto che rappresenta il fuso orario obbligatorio.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. Tuttavia, i fusi orari creati da queste chiamate al metodo non sono ora definiti dal sistema e non possono essere FindSystemTimeZoneById recuperati tramite il metodo.However, time zones created by these method calls are not system-defined time and cannot be retrieved using the FindSystemTimeZoneById method. È possibile accedere a questi fusi orari personalizzati solo tramite il riferimento all'oggetto restituito CreateCustomTimeZone dalla FromSerializedString chiamata al metodo o.These custom time zones can be accessed only through the object reference returned by the CreateCustomTimeZone or FromSerializedString method call.

Questo metodo restituisce una nuova TimeZoneInfo istanza per ogni chiamata al metodo e non restituisce oggetti memorizzati nella cache.This method returns a new TimeZoneInfo instance for each method call; it does not return cached objects. Ciò può influito sulle prestazioni nelle applicazioni che FindSystemTimeZoneById chiamano ripetutamente il metodo con lo stesso identificatore.This may impact performance in applications that call the FindSystemTimeZoneById method repeatedly with the same identifier.

Si applica a

Vedi anche