Partage via


TimeZoneInfo.FindSystemTimeZoneById(String) Méthode

Définition

Retourne un TimeZoneInfo objet en fonction de son identificateur.

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

Paramètres

id
String

Identificateur de fuseau horaire, qui correspond à la propriété Id.

Retours

Objet dont l'identificateur est la valeur du paramètre id.

Exceptions

Le système n’a pas suffisamment de mémoire pour conserver les informations sur le fuseau horaire.

Le paramètre id a la valeur null.

L’identificateur de fuseau horaire spécifié par id est introuvable. Cela signifie qu’un identificateur de fuseau horaire dont le nom correspond à id n’existe pas ou qu’il existe mais ne contient pas de données de fuseau horaire.

Le processus n’a pas les autorisations nécessaires pour lire la clé de Registre qui contient les informations de fuseau horaire.

L’identificateur de fuseau horaire a été trouvé, mais les données du Registre sont endommagées.

Exemples

L’exemple suivant utilise la FindSystemTimeZoneById méthode pour récupérer le fuseau horaire standard de Tokyo. Cet TimeZoneInfo objet est ensuite utilisé pour convertir l’heure locale en heure de Tokyo et déterminer s’il s’agit de l’heure standard de Tokyo ou de l’heure d’été de Tokyo.

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
open System

// Get time in local time zone 
let thisTime = DateTime.Now
printfn $"Time in {if TimeZoneInfo.Local.IsDaylightSavingTime thisTime then TimeZoneInfo.Local.DaylightName else TimeZoneInfo.Local.StandardName} zone: {thisTime}"
printfn $"   UTC Time: {TimeZoneInfo.ConvertTimeToUtc(thisTime, TimeZoneInfo.Local)}"
// Get Tokyo Standard Time zone
let tst = TimeZoneInfo.FindSystemTimeZoneById "Tokyo Standard Time"
let tstTime = TimeZoneInfo.ConvertTime(thisTime, TimeZoneInfo.Local, tst)      
printfn $"Time in {if tst.IsDaylightSavingTime tstTime then tst.DaylightName else tst.StandardName} zone: {tstTime}"
printfn $"   UTC Time: {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

Remarques

Le id paramètre doit correspondre exactement à l’identificateur du fuseau horaire dans la longueur, mais pas au cas où, pour qu’une correspondance réussie se produise ; autrement dit, la comparaison de avec les identificateurs de id fuseau horaire ne respecte pas la casse. Si vous souhaitez récupérer des objets de fuseau horaire en fonction de correspondances partielles, vous pouvez écrire des procédures personnalisées qui fonctionnent avec la collection d’objets en TimeZoneInfo lecture seule retournée par la GetSystemTimeZones méthode .

Sur les systèmes Windows, FindSystemTimeZoneById tente de faire correspondre id les noms de sous-clés de la branche HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones du Registre. Sur Linux et macOS, il utilise les informations de fuseau horaire disponibles dans la bibliothèque ICU. Si le Registre ou la bibliothèque ne dispose pas des informations relatives au fuseau horaire souhaité, vous pouvez créer un fuseau horaire particulier en appelant l’une des surcharges de la CreateCustomTimeZone méthode ou en appelant FromSerializedString pour désérialiser un TimeZoneInfo objet qui représente le fuseau horaire requis. Toutefois, les fuseaux horaires créés par ces appels de méthode ne sont pas définis par le système et ne peuvent pas être récupérés à l’aide de la FindSystemTimeZoneById méthode . Ces fuseaux horaires personnalisés sont accessibles uniquement via la référence d’objet retournée par l’appel de méthode CreateCustomTimeZone ou FromSerializedString .

Dans .NET 7 et les versions antérieures, cette méthode retourne une nouvelle TimeZoneInfo instance pour chaque appel de méthode. Cela peut avoir un impact sur les performances dans les applications qui appellent la FindSystemTimeZoneById méthode à plusieurs reprises avec le même identificateur. (Dans .NET 8 et versions ultérieures, cette méthode retourne toujours un mis en TimeZoneInfo cache instance.)

S’applique à

Voir aussi