Cette documentation est archivée et n’est pas conservée.

TimeZoneInfo.FromSerializedString, méthode

Mise à jour : novembre 2007

Désérialise une chaîne pour recréer un objet TimeZoneInfo sérialisé d'origine.

Espace de noms :  System
Assembly :  System.Core (dans System.Core.dll)

public static TimeZoneInfo FromSerializedString(
	string source
)
public static TimeZoneInfo FromSerializedString(
	String source
)
public static function FromSerializedString(
	source : String
) : TimeZoneInfo

Paramètres

source
Type : System.String
Chaîne représentant l'objet TimeZoneInfo sérialisé en cours.

Valeur de retour

Type : System.TimeZoneInfo
Objet TimeZoneInfo.

ExceptionCondition
ArgumentException

Le paramètre source a la valeur String.Empty.

ArgumentNullException

Le paramètre source est une chaîne nulle.

SerializationException

Le paramètre source ne peut pas être désérialisé de nouveau dans un objet TimeZoneInfo.

Il existe une alternative pour fournir tout le code requis pour créer un fuseau horaire introuvable dans le Registre. Vous pouvez définir un fuseau horaire personnalisé et utiliser la méthode ToSerializedString dans un fichier exécutable autonome ou utiliser le programme d'installation d'une application pour enregistrer le fuseau horaire en tant que chaîne. L'application peut ensuite récupérer cette chaîne à partir de son emplacement de stockage et l'instancier à l'aide de la méthode FromSerializedString.

L'exemple suivant essaie de récupérer le fuseau horaire d'Antarctique/du Pôle Sud à partir du système local. S'il échoue, le code essaie de récupérer des informations à propos du fuseau horaire à partir d'un fichier texte dans le répertoire de l'application. Si cette tentative échoue, le code crée le fuseau horaire et écrit des informations à propos du fuseau horaire dans le fichier texte.

private TimeZoneInfo InitializeTimeZone()
{
   TimeZoneInfo southPole = null;
   // Determine if South Pole time zone is defined in system
   try
   {
      southPole = TimeZoneInfo.FindSystemTimeZoneById("Antarctica/South Pole Standard Time");
   }
   // Time zone does not exist; create it, store it in a text file, and return it
   catch
   {
      const string filename = @".\TimeZoneInfo.txt";
      bool found = false;

      if (File.Exists(filename))
      {
         StreamReader reader = new StreamReader(filename);
         string timeZoneInfo;
         while (reader.Peek() >= 0)
         {
            timeZoneInfo = reader.ReadLine();
            if (timeZoneInfo.Contains("Antarctica/South Pole"))
            {
               southPole = TimeZoneInfo.FromSerializedString(timeZoneInfo);
               reader.Close();
               found = true;
               break;
            }   
         }
      }
      if (! found)
      {               
         // Define transition times to/from DST
         TimeZoneInfo.TransitionTime startTransition = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 2, 0, 0), 10, 1, DayOfWeek.Sunday); 
         TimeZoneInfo.TransitionTime endTransition = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 2, 0, 0), 3, 3, DayOfWeek.Sunday);
         // Define adjustment rule
         TimeSpan delta = new TimeSpan(1, 0, 0);
         TimeZoneInfo.AdjustmentRule adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(new DateTime(1989, 10, 1), DateTime.MaxValue.Date, delta, startTransition, endTransition);
         // Create array for adjustment rules
         TimeZoneInfo.AdjustmentRule[] adjustments = {adjustment};
         // Define other custom time zone arguments
         string displayName = "(GMT+12:00) Antarctica/South Pole";
         string standardName = "Antarctica/South Pole Standard Time";
         string daylightName = "Antarctica/South Pole Daylight Time";
         TimeSpan offset = new TimeSpan(12, 0, 0);
         southPole = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName, daylightName, adjustments);
         // Write time zone to the file
         StreamWriter writer = new StreamWriter(filename, true);
         writer.WriteLine(southPole.ToSerializedString());
         writer.Close();
      }
   }
   return southPole;
}


Windows Vista, Windows XP SP2, Windows Server 2003

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 3.5
Afficher: