TimeZoneInfo.FromSerializedString(String) TimeZoneInfo.FromSerializedString(String) TimeZoneInfo.FromSerializedString(String) TimeZoneInfo.FromSerializedString(String) Method

Definition

Deserialisiert eine Zeichenfolge, um ein ursprüngliches TimeZoneInfo-Objekt erneut zu erstellen.Deserializes a string to re-create an original serialized TimeZoneInfo object.

public:
 static TimeZoneInfo ^ FromSerializedString(System::String ^ source);
public static TimeZoneInfo FromSerializedString (string source);
static member FromSerializedString : string -> TimeZoneInfo
Public Shared Function FromSerializedString (source As String) As TimeZoneInfo

Parameter

source
String String String String

Die Zeichenfolgendarstellung des serialisierten TimeZoneInfo-Objekts.The string representation of the serialized TimeZoneInfo object.

Gibt zurück

Das ursprüngliche serialisierte Objekt.The original serialized object.

Ausnahmen

Der source-Parameter ist Empty.The source parameter is Empty.

Der source-Parameter ist eine NULL-Zeichenfolge.The source parameter is a null string.

Der Quellparameter kann nicht zurück in ein TimeZoneInfo-Objekt deserialisiert werden.The source parameter cannot be deserialized back into a 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 schreibt Informationen über die Zeitzone in der Textdatei.If this attempt fails, the code creates the time zone and writes information about the time zone 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

Es ist eine Alternative zum Bereitstellen des Codes erforderlich, um eine Zeitzone, die nicht in der Registrierung auf Windows oder im gefunden wird, erstellt die ICU-Bibliothek unter Linux und MacOS.There is an alternative to providing all the code required to create a time zone that is not found in the registry on Windows or in the ICU Library on Linux and macOS. Sie können eine benutzerdefinierte Zeitzone und entweder definieren verwenden die ToSerializedString -Methode in einer eigenständigen ausführbaren Datei oder einer Anwendung Setupprogramm speichern die Zeitzone als Zeichenfolge verwenden.You can define a custom time zone and either use the ToSerializedString method in a standalone executable or use an application's setup program to save the time zone as a string. Die Anwendung kann dann rufen Sie diese Zeichenfolge aus den Speicherort und instanziiere es mit der FromSerializedString Methode.The application can then retrieve this string from its storage location and instantiate it using the FromSerializedString method.

Gilt für:

Siehe auch