TimeZoneInfo.ToSerializedString TimeZoneInfo.ToSerializedString TimeZoneInfo.ToSerializedString TimeZoneInfo.ToSerializedString Method

Definition

Konvertiert das aktuelle TimeZoneInfo-Objekt in eine serialisierte Zeichenfolge.Converts the current TimeZoneInfo object to a serialized string.

public:
 System::String ^ ToSerializedString();
public string ToSerializedString ();
member this.ToSerializedString : unit -> string
Public Function ToSerializedString () As String

Gibt zurück

Eine Zeichenfolge, die das aktuelle TimeZoneInfo-Objekt darstellt.A string that represents the current TimeZoneInfo object.

Beispiele

Im folgenden Beispiel wird versucht, zum Abrufen der Antarktis/Südpol Zeitzone aus dem lokalen System.The following example tries to retrieve the Antarctica/South Pole time zone from the local system. Schlägt fehl, versucht der Code für das Abrufen von Informationen über die Zeitzone aus einer Textdatei im Verzeichnis Anwendung.If it fails, the code tries to retrieve information about the time zone from a text file in the application directory. Wenn dieser Versuch fehlschlägt, wird der Code erstellt die Zeitzone und Informationen zu der Textdatei schreibt.If this attempt fails, the code creates the time zone and writes information about it to the text file.

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;
}
Private Function InitializeTimeZone() As TimeZoneInfo
   Dim southPole As TimeZoneInfo = Nothing
   ' 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 e As TimeZoneNotFoundException
      Dim found As Boolean
      Const filename As String = ".\TimeZoneInfo.txt"
      
      If File.Exists(filename) Then
         Dim reader As StreamReader = New StreamReader(fileName)
         Dim timeZoneString As String
         Do While reader.Peek() >= 0
            timeZoneString = reader.ReadLine()
            If timeZoneString.Contains("Antarctica/South Pole") Then
               southPole = TimeZoneInfo.FromSerializedString(timeZoneString)
               reader.Close()
               found = True
               Exit Do
            End If   
         Loop
      End If
      If Not found Then               
         ' Define transition times to/from DST
         Dim startTransition As TimeZoneInfo.TransitionTime = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(#02:00:00#, 10, 1, DayOfWeek.Sunday) 
         Dim endTransition As TimeZoneInfo.TransitionTime = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(#02:00:00#, 3, 3, DayOfWeek.Sunday)
         ' Define adjustment rule
         Dim delta As TimeSpan = New TimeSpan(1, 0, 0)
         Dim adjustment As TimeZoneInfo.AdjustmentRule = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(#10/01/1989#, Date.MaxValue.Date, delta, startTransition, endTransition)
         ' Create array for adjustment rules
         Dim adjustments() As TimeZoneInfo.AdjustmentRule = {adjustment}
         ' Define other custom time zone arguments
         Dim displayName As String = "(GMT+12:00) Antarctica/South Pole"
         Dim standardName As String = "Antarctica/South Pole Standard Time"
         Dim daylightName As String = "Antarctica/South Pole Daylight Time"
         Dim offset As TimeSpan = New TimeSpan(12, 0, 0)
         southPole = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName, daylightName, adjustments)
         ' Write time zone to the file
         Dim writer As StreamWriter = New StreamWriter(filename, True)
         writer.WriteLine(southPole.ToSerializedString())
         writer.Close()
      End If
   End Try
   Return southPole
End Function

Hinweise

Anwendungen, Zeitzonen, die nicht in der Regel in der Registrierung des Windows-Systems definiert sind oder die ICU-Bibliothek unter Linux und MacOScan können die CreateCustomTimeZone Methode, um die erforderlichen Zeitzonen als instanziierenTimeZoneInfoObjekte.Applications that rely on time zones that are not typically defined in the registry of Windows systems or the ICU Library on Linux and macOScan can use the CreateCustomTimeZone method to instantiate the necessary time zones as TimeZoneInfo objects. Die Anwendung kann dann Aufrufen der ToSerializedString Methode, um das Objekt für die Zeitzone in eine Zeichenfolge zu konvertieren.The application can then call the ToSerializedString method to convert the time zone object to a string.

Die TimeZoneInfo Objekt sollte an einem Speicherort, in dem die Anwendung kann diese abrufen bei Bedarf, auch gespeichert werden.The TimeZoneInfo object should also be stored in a location where the application can retrieve it when needed. Möglicher Speicherorte sind:Possible locations include:

  • Die Registrierung auf Windows-Systemen.The registry on Windows systems.

  • Eine Ressourcendatei für die Anwendung.An application resource file.

  • Eine externe Datei, z. B. eine Textdatei.An external file, such as a text file.

Gilt für:

Siehe auch