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 系统要求。