TimeZoneInfo.ToSerializedString Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Converteert het huidige TimeZoneInfo object naar een geserialiseerde tekenreeks.
public:
System::String ^ ToSerializedString();
public string ToSerializedString();
member this.ToSerializedString : unit -> string
Public Function ToSerializedString () As String
Retouren
Een tekenreeks die het huidige TimeZoneInfo object vertegenwoordigt.
Voorbeelden
In het volgende voorbeeld wordt geprobeerd de tijdzone Antarctica/Zuidpool op te halen uit het lokale systeem. Als dit mislukt, probeert de code informatie over de tijdzone op te halen uit een tekstbestand in de toepassingsmap. Als deze poging mislukt, maakt de code de tijdzone en schrijft deze informatie naar het tekstbestand.
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;
}
let initializeTimeZone () =
// Determine if South Pole time zone is defined in system
try
TimeZoneInfo.FindSystemTimeZoneById "Antarctica/South Pole Standard Time"
// Time zone does not exist create it, store it in a text file, and return it
with _ ->
let filename = @".\TimeZoneInfo.txt"
let mutable southPole = Unchecked.defaultof<TimeZoneInfo>
let mutable found = false
if File.Exists filename then
use reader = new StreamReader(filename)
while reader.Peek() >= 0 && not found do
let timeZoneInfo = reader.ReadLine()
if timeZoneInfo.Contains "Antarctica/South Pole" then
southPole <- TimeZoneInfo.FromSerializedString timeZoneInfo
reader.Close()
found <- true
if not found then
// Define transition times to/from DST
let startTransition = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(DateTime(1, 1, 1, 2, 0, 0), 10, 1, DayOfWeek.Sunday)
let endTransition = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(DateTime(1, 1, 1, 2, 0, 0), 3, 3, DayOfWeek.Sunday)
// Define adjustment rule
let delta = TimeSpan(1, 0, 0)
let adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(DateTime(1989, 10, 1), DateTime.MaxValue.Date, delta, startTransition, endTransition)
// Create array for adjustment rules
let adjustments = [| adjustment |]
// Define other custom time zone arguments
let displayName = "(GMT+12:00) Antarctica/South Pole"
let standardName = "Antarctica/South Pole Standard Time"
let daylightName = "Antarctica/South Pole Daylight Time"
let offset = TimeSpan(12, 0, 0)
southPole <- TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName, daylightName, adjustments)
// Write time zone to the file
use writer = new StreamWriter(filename, true)
writer.WriteLine(southPole.ToSerializedString())
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
Opmerkingen
Toepassingen die afhankelijk zijn van tijdzones die doorgaans niet zijn gedefinieerd in het register van Windows systemen of de ICU-bibliotheek op Linux en macOScan, kunnen de methode CreateCustomTimeZone gebruiken om de benodigde tijdzones te instantiƫren als TimeZoneInfo-objecten. De toepassing kan vervolgens de ToSerializedString methode aanroepen om het tijdzoneobject te converteren naar een tekenreeks.
Het TimeZoneInfo object moet ook worden opgeslagen op een locatie waar de toepassing het kan ophalen wanneer dat nodig is. Mogelijke locaties zijn:
Het register op Windows systemen.
Een toepassingsresourcebestand.
Een extern bestand, zoals een tekstbestand.