Deserialize a string and recreate an original serialized TimeZoneInfo object in CSharp
Description
The following code shows how to deserialize a string and recreate an original serialized TimeZoneInfo object.
Example
using System.IO;//from w ww . j ava 2s . c o m
using System;
public class MainClass
{
public static void Main(String[] argv)
{
TimeZoneInfo southPole = null;
const string filename = @".\TimeZoneInfo.txt";
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);
TimeSpan delta = new TimeSpan(1, 0, 0);
TimeZoneInfo.AdjustmentRule adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(new DateTime(1989, 10, 1), DateTime.MaxValue.Date, delta, startTransition, endTransition);
TimeZoneInfo.AdjustmentRule[] adjustments = { adjustment };
string displayName = "(GMT+12:00) myTimeZone";
string standardName = "myTimeZone Standard Time";
string daylightName = "myTimeZone Daylight Time";
TimeSpan offset = new TimeSpan(12, 0, 0);
southPole = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName, daylightName, adjustments);
StreamWriter writer = new StreamWriter(filename, true);
writer.WriteLine(southPole.ToSerializedString());
writer.Close();
StreamReader reader = new StreamReader(filename);
string timeZoneInfo;
while (reader.Peek() >= 0)
{
timeZoneInfo = reader.ReadLine();
if (timeZoneInfo.Contains("myTimeZone"))
{
southPole = TimeZoneInfo.FromSerializedString(timeZoneInfo);
reader.Close();
break;
}
}
}
}