TimeZoneInfo.ToSerializedString Metoda
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Konwertuje bieżący TimeZoneInfo obiekt na ciąg serializowany.
public:
System::String ^ ToSerializedString();
public string ToSerializedString ();
member this.ToSerializedString : unit -> string
Public Function ToSerializedString () As String
Ciąg reprezentujący bieżący TimeZoneInfo obiekt.
Poniższy przykład próbuje pobrać strefę czasową Antarktydy/Biegun Południowy z systemu lokalnego. W przypadku niepowodzenia kod próbuje pobrać informacje o strefie czasowej z pliku tekstowego w katalogu aplikacji. Jeśli ta próba nie powiedzie się, kod tworzy strefę czasową i zapisuje informacje o nim w pliku tekstowym.
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
Aplikacje, które opierają się na strefach czasowych, które nie są zwykle zdefiniowane w rejestrze systemów Windows lub biblioteki ICU w systemie Linux i macOScan, mogą używać CreateCustomTimeZone metody do tworzenia wystąpień niezbędnych stref czasowych jako TimeZoneInfo obiektów. Następnie aplikacja może wywołać metodę ToSerializedString , aby przekonwertować obiekt strefy czasowej na ciąg.
Obiekt TimeZoneInfo powinien być również przechowywany w lokalizacji, w której aplikacja może ją pobrać w razie potrzeby. Możliwe lokalizacje obejmują:
Rejestr w systemach Windows.
Plik zasobu aplikacji.
Plik zewnętrzny, taki jak plik tekstowy.
Produkt | Wersje |
---|---|
.NET | Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 2.0, 2.1 |
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię: