System.TimeZoneInfo.ToSerializedString 方法
方法描述
将当前的 TimeZoneInfo 对象转换为序列化字符串。
语法定义(C# System.TimeZoneInfo.ToSerializedString 方法 的用法)
public string ToSerializedString()
参数/返回值
参数值/返回值 | 参数类型/返回类型 | 参数描述/返回描述 |
---|---|---|
返回值 | System.String | 一个字符串,表示当前的 TimeZoneInfo 对象。 |
提示和注释
如果应用程序依赖于通常不在 Windows 系统注册表中定义的时区,则这样的应用程序可以使用 CreateCustomTimeZone 方法将必要的时区实例化为 TimeZoneInfo 对象。 然后,应用程序可调用 ToSerializedString 方法将该时区对象转换为字符串。
TimeZoneInfo 对象还应存储在应用程序在需要时能检索到的位置。 可能的位置包括:
注册表。
应用程序资源文件。
外部文件,如文本文件。
System.TimeZoneInfo.ToSerializedString 方法例子
如果此尝试失败,代码将创建时区并将时区的相关信息写入文本文件。
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; }
版本信息
.NET Framework 受以下版本支持:4、3.5 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1
适用平台
Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。