TimeZoneInfo.ToSerializedString Metoda

Definicja

Konwertuje bieżący TimeZoneInfo obiekt na ciąg serializowany.

public string ToSerializedString ();

Zwraca

Ciąg reprezentujący bieżący TimeZoneInfo obiekt.

Przykłady

Poniższy przykład próbuje pobrać strefę czasową Antarktydy/Biegun Południowy z systemu lokalnego. W przypadku niepowodzenia kod próbuje pobrać informacje o strefie czasowej z pliku tekstowego w katalogu aplikacji. Jeśli ta próba nie powiedzie się, kod tworzy strefę czasową i zapisuje informacje o nim w pliku tekstowym.

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;
}

Uwagi

Aplikacje, które opierają się na strefach czasowych, które nie są zwykle zdefiniowane w rejestrze systemów Windows lub biblioteki ICU w systemie Linux i macOScan, mogą używać CreateCustomTimeZone metody do tworzenia wystąpień niezbędnych stref czasowych jako TimeZoneInfo obiektów. Następnie aplikacja może wywołać metodę ToSerializedString , aby przekonwertować obiekt strefy czasowej na ciąg.

Obiekt TimeZoneInfo powinien być również przechowywany w lokalizacji, w której aplikacja może ją pobrać w razie potrzeby. Możliwe lokalizacje obejmują:

  • Rejestr w systemach Windows.

  • Plik zasobu aplikacji.

  • Plik zewnętrzny, taki jak plik tekstowy.

Dotyczy

Produkt Wersje
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Zobacz też