.NET gère les fuseaux horaires à l'aide de deux systèmes: fuseaux horaires Windows (par exemple, "Eastern Standard Time") et IANA Fuseaux horaires (par exemple, "America / New_york"). Alors que IANA est la norme pour les API Internet, la conversion entre les deux est souvent nécessaire.
Avant .net 6, le fichier windowsZones.xml
(du projet Unicode CLDR) était la principale méthode de conversion. Cependant, les limitations ont conduit à la création du package TimeZoneConverter
NuGet, offrant une solution plus fiable.
Voici comment TimeZoneConverter
simplifie le processus:
string tz = TZConvert.IanaToWindows("America/New_York"); // Returns: "Eastern Standard Time" string tz = TZConvert.WindowsToIana("Eastern Standard Time"); // Returns: "America/New_York" string tz = TZConvert.WindowsToIana("Eastern Standard Time", "CA"); // Returns: "America/Toronto"
.NET 6 et les versions ultérieures fournissent une prise en charge intégrée pour les fuseaux horaires Windows et IANA sur les systèmes avec les données de fuseau horaire et les soins intensifs nécessaires (composants internationaux pour Unicode). Cela simplifie la conversion directe:
TimeZoneInfo windowsZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"); TimeZoneInfo ianaZone = TimeZoneInfo.FindSystemTimeZoneById("America/New_York");
Il est important de noter qu'un seul fuseau horaire Windows pourrait mapper à plusieurs zones IANA. La valeur par défaut est la "zone d'or" ("001" de CLDR). Pour spécifier une correspondance différente, utilisez un code de pays (comme indiqué dans l'exemple TimeZoneConverter
en utilisant "CA").
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!