TimeZoneInfo.CreateCustomTimeZone Metoda
Definicja
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.
Definiuje strefę czasową, która nie została znaleziona na komputerze lokalnym.
Przeciążenia
CreateCustomTimeZone(String, TimeSpan, String, String, String, TimeZoneInfo+AdjustmentRule[], Boolean) |
Tworzy niestandardową strefę czasową z określonym identyfikatorem, przesunięciem z uniwersalnego czasu koordynowanego (UTC), nazwą wyświetlaną, nazwą standardową, nazwą czasu letniego, regułami czasu letniego i wartością wskazującą, czy zwracany obiekt odzwierciedla informacje o czasie letnim. |
CreateCustomTimeZone(String, TimeSpan, String, String) |
Tworzy niestandardową strefę czasową z określonym identyfikatorem, przesunięciem z uniwersalnego czasu koordynowanego (UTC), nazwą wyświetlaną i nazwą wyświetlaną w czasie standardowym. |
CreateCustomTimeZone(String, TimeSpan, String, String, String, TimeZoneInfo+AdjustmentRule[]) |
Tworzy niestandardową strefę czasową z określonym identyfikatorem, przesunięciem z uniwersalnego czasu koordynowanego (UTC), nazwą wyświetlaną, nazwą czasową standardową, nazwą czasu letniego i regułami czasu letniego. |
CreateCustomTimeZone(String, TimeSpan, String, String, String, TimeZoneInfo+AdjustmentRule[], Boolean)
- Źródło:
- TimeZoneInfo.cs
- Źródło:
- TimeZoneInfo.cs
- Źródło:
- TimeZoneInfo.cs
Tworzy niestandardową strefę czasową z określonym identyfikatorem, przesunięciem z uniwersalnego czasu koordynowanego (UTC), nazwą wyświetlaną, nazwą standardową, nazwą czasu letniego, regułami czasu letniego i wartością wskazującą, czy zwracany obiekt odzwierciedla informacje o czasie letnim.
public:
static TimeZoneInfo ^ CreateCustomTimeZone(System::String ^ id, TimeSpan baseUtcOffset, System::String ^ displayName, System::String ^ standardDisplayName, System::String ^ daylightDisplayName, cli::array <TimeZoneInfo::AdjustmentRule ^> ^ adjustmentRules, bool disableDaylightSavingTime);
public static TimeZoneInfo CreateCustomTimeZone (string id, TimeSpan baseUtcOffset, string? displayName, string? standardDisplayName, string? daylightDisplayName, TimeZoneInfo.AdjustmentRule[]? adjustmentRules, bool disableDaylightSavingTime);
public static TimeZoneInfo CreateCustomTimeZone (string id, TimeSpan baseUtcOffset, string displayName, string standardDisplayName, string daylightDisplayName, TimeZoneInfo.AdjustmentRule[] adjustmentRules, bool disableDaylightSavingTime);
static member CreateCustomTimeZone : string * TimeSpan * string * string * string * TimeZoneInfo.AdjustmentRule[] * bool -> TimeZoneInfo
Public Shared Function CreateCustomTimeZone (id As String, baseUtcOffset As TimeSpan, displayName As String, standardDisplayName As String, daylightDisplayName As String, adjustmentRules As TimeZoneInfo.AdjustmentRule(), disableDaylightSavingTime As Boolean) As TimeZoneInfo
Parametry
- id
- String
Identyfikator strefy czasowej.
- baseUtcOffset
- TimeSpan
TimeSpan Obiekt reprezentujący różnicę czasu między tą strefą czasową a uniwersalnym czasem koordynowanym (UTC).
- displayName
- String
Nazwa wyświetlana nowej strefy czasowej.
- standardDisplayName
- String
Nazwa godziny standardowej nowej strefy czasowej.
- daylightDisplayName
- String
Nazwa czasu letniego nowej strefy czasowej.
- adjustmentRules
- TimeZoneInfo.AdjustmentRule[]
Tablica TimeZoneInfo.AdjustmentRule obiektów, które rozszerzają podstawowe przesunięcie UTC dla określonego okresu.
- disableDaylightSavingTime
- Boolean
true
aby odrzucić wszelkie informacje dotyczące czasu letniego związane adjustmentRules
z nowym obiektem; w przeciwnym razie false
.
Zwraca
Nowa strefa czasowa.
disableDaylightSavingTime
Jeśli parametr ma true
wartość , zwracany obiekt nie ma danych czasu letniego.
Wyjątki
Parametr id
ma wartość null
.
Parametr id
jest pustym ciągiem ("").
-lub-
Parametr baseUtcOffset
nie reprezentuje całkowitej liczby minut.
Parametr baseUtcOffset
jest dłuższy niż 14 godzin lub krótszy niż -14 godzin.
Reguły korekty określone w parametrze adjustmentRules
nakładają się na siebie.
-lub-
Reguły korekty określone w parametrze adjustmentRules
nie są w kolejności chronologicznej.
-lub-
Co najmniej jeden element w pliku adjustmentRules
to null
.
-lub-
Data może mieć zastosowanie do niej wielu reguł korekty.
-lub-
Suma parametru baseUtcOffset
i DaylightDelta wartości co najmniej jednego obiektu w adjustmentRules
tablicy jest większa niż 14 godzin lub mniejsza niż -14 godzin.
Przykłady
Poniższy przykład tworzy niestandardową strefę czasową dla stacji Palmer i wyspy Anvers na Antarktydzie. Ustawia disableDaylightSavingTime
parametr w wywołaniu TimeZoneInfo.CreateCustomTimeZone metody na true
. Następnie wyświetla nową nazwę czasu letniego strefy czasowej, jeśli jest obecna, oraz liczbę reguł korekty w celu potwierdzenia, że nowa strefa czasowa nie ma informacji o czasie letnim.
// Define transition times to/from DST
TimeZoneInfo.TransitionTime startTransition, endTransition;
startTransition = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 4, 0, 0),
10, 2, DayOfWeek.Sunday);
endTransition = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1,3, 0, 0),
3, 2, DayOfWeek.Sunday);
// Define adjustment rule
TimeSpan delta = new TimeSpan(1, 0, 0);
TimeZoneInfo.AdjustmentRule adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(new DateTime(1999, 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-04:00) Antarctica/Palmer Time";
string standardName = "Palmer Standard Time";
string daylightName = "Palmer Daylight Time";
TimeSpan offset = new TimeSpan(-4, 0, 0);
// Create custom time zone without copying DST information
TimeZoneInfo palmer = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName,
daylightName, adjustments, true);
// Indicate whether new time zone//s adjustment rules are present
Console.WriteLine("{0} {1}has {2} adjustment rules.",
palmer.StandardName,
! (string.IsNullOrEmpty(palmer.DaylightName)) ? "(" + palmer.DaylightName + ") ": "" ,
palmer.GetAdjustmentRules().Length);
// Indicate whether new time zone supports DST
Console.WriteLine("{0} supports DST: {1}", palmer.StandardName, palmer.SupportsDaylightSavingTime);
// Define transition times to/from DST
let startTransition =
TimeZoneInfo.TransitionTime.CreateFloatingDateRule(DateTime(1, 1, 1, 4, 0, 0), 10, 2, DayOfWeek.Sunday)
let endTransition =
TimeZoneInfo.TransitionTime.CreateFloatingDateRule(DateTime(1, 1, 1,3, 0, 0), 3, 2, DayOfWeek.Sunday)
// Define adjustment rule
let delta = TimeSpan(1, 0, 0)
let adjustment =
TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(DateTime(1999, 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-04:00) Antarctica/Palmer Time"
let standardName = "Palmer Standard Time"
let daylightName = "Palmer Daylight Time"
let offset = TimeSpan(-4, 0, 0)
// Create custom time zone without copying DST information
let palmer = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName, daylightName, adjustments, true)
// Indicate whether time zone//s adjustment rules are present
printfn $"""{palmer.StandardName} {if String.IsNullOrEmpty palmer.DaylightName then "" else "(" + palmer.DaylightName + ")"}has {palmer.GetAdjustmentRules().Length} adjustment rules."""
// Indicate whether time zone supports DST
printfn $"{palmer.StandardName} supports DST: {palmer.SupportsDaylightSavingTime}"
' Define transition times to/from DST
Dim startTransition As TimeZoneInfo.TransitionTime = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(#04:00:00#, 10, 2, DayOfWeek.Sunday)
Dim endTransition As TimeZoneInfo.TransitionTime = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(#3:00:00#, 3, 2, DayOfWeek.Sunday)
' Define adjustment rule
Dim delta As TimeSpan = New TimeSpan(1, 0, 0)
Dim adjustment As TimeZoneInfo.AdjustmentRule = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(#10/01/1999#, 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-04:00) Antarctica/Palmer Time"
Dim standardName As String = "Palmer Standard Time"
Dim daylightName As String = "Palmer Daylight Time"
Dim offset As TimeSpan = New TimeSpan(-4, 0, 0)
Dim palmer As TimeZoneInfo = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName, daylightName, adjustments, True)
' Indicate whether new time zone's adjustment rules are present
Console.WriteLine("{0} {1}has {2} adjustment rules.", _
palmer.StandardName, _
IIf(Not String.IsNullOrEmpty(palmer.DaylightName), "(" & palmer.DaylightName & ") ", ""), _
palmer.GetAdjustmentRules().Length)
' Indicate whether new time zone supports DST
Console.WriteLine("{0} supports DST: {1}", palmer.StandardName, palmer.SupportsDaylightSavingTime)
Uwagi
Tego przeciążenia metody można użyć do utworzenia niestandardowej TimeZoneInfo.CreateCustomTimeZone strefy czasowej, której obsługa czasu letniego może być określona przez warunki w czasie wykonywania.
W poniższej tabeli przedstawiono relację między parametrami dostarczonymi do TimeZoneInfo.CreateCustomTimeZone metody a elementami członkowskimi TimeZoneInfo obiektu, które są zwracane przez wywołanie metody.
CreateCustomTimeZone , parametr | Właściwość TimeZoneInfo |
---|---|
id |
Id |
baseUtcOffset |
BaseUtcOffset |
displayName |
DisplayName |
standardDisplayName |
StandardName |
daylightDisplayName |
DaylightName if disableDaylightSavingTime is false ; String.Empty if disableDaylightSavingTime to true . |
adjustmentRules |
Tablica TimeZoneInfo.AdjustmentRule obiektów zwracanych przez metodę GetAdjustmentRules if disableDaylightSavingTime jest false ; pusta tablica zwrócona przez metodę GetAdjustmentRules , jeśli disableDaylightSavingTime jest true . |
disableDaylightSavingTime |
Nie SupportsDaylightSavingTime. |
Zazwyczaj nazwa standardowego czasu strefy czasowej i jej identyfikator są takie same. Jednak długość identyfikatora strefy czasowej nie powinna przekraczać 32 znaków. Ciąg przekazany do parametru displayName
jest zgodny z dość standardowym formatem. Pierwszą częścią nazwy wyświetlanej jest przesunięcie podstawowe strefy czasowej z uniwersalnego czasu koordynowanego, który jest wskazywany przez akronim GMT (dla Greenwich Mean Time), ujęty w nawiasy. Następuje po nim ciąg, który identyfikuje samą strefę czasową lub co najmniej jedno miasto, regiony lub kraje w strefie czasowej lub oba te elementy. Na przykład:
(GMT+02:00) Athens, Beirut, Istanbul, Minsk
(GMT-02:00) Mid-Atlantic
(GMT-07:00) Mountain Time (US & Canada)
Reguły korekty strefy czasowej są definiowane przez wykonanie następujących czynności:
CreateFloatingDateRule Wywołanie metody lub CreateFixedDateRule w celu zdefiniowania reguł przejścia początkowego i końcowego dla każdej reguły korekty.
Wywoływanie CreateAdjustmentRule metody dla każdej reguły korekty.
Przypisywanie reguł korekty do tablicy, którą można przekazać jako
adjustmentRules
parametr.
Jeśli disableDaylightSavingTime
parametr ma false
wartość , operacja tej metody jest identyczna TimeZoneInfo.CreateCustomTimeZone z przeciążeniem. Jeśli disableDaylightSavingTime
parametr ma true
wartość , zwracany obiekt nie zawiera żadnych reguł korekty i DaylightName właściwość, której wartość jest pustym ciągiem.
Zobacz też
- Instrukcje: tworzenie stref czasowych bez reguł korekty
- Instrukcje: tworzenie stref czasowych przy użyciu reguł korekty
Dotyczy
CreateCustomTimeZone(String, TimeSpan, String, String)
- Źródło:
- TimeZoneInfo.cs
- Źródło:
- TimeZoneInfo.cs
- Źródło:
- TimeZoneInfo.cs
Tworzy niestandardową strefę czasową z określonym identyfikatorem, przesunięciem z uniwersalnego czasu koordynowanego (UTC), nazwą wyświetlaną i nazwą wyświetlaną w czasie standardowym.
public:
static TimeZoneInfo ^ CreateCustomTimeZone(System::String ^ id, TimeSpan baseUtcOffset, System::String ^ displayName, System::String ^ standardDisplayName);
public static TimeZoneInfo CreateCustomTimeZone (string id, TimeSpan baseUtcOffset, string? displayName, string? standardDisplayName);
public static TimeZoneInfo CreateCustomTimeZone (string id, TimeSpan baseUtcOffset, string displayName, string standardDisplayName);
static member CreateCustomTimeZone : string * TimeSpan * string * string -> TimeZoneInfo
Public Shared Function CreateCustomTimeZone (id As String, baseUtcOffset As TimeSpan, displayName As String, standardDisplayName As String) As TimeZoneInfo
Parametry
- id
- String
Identyfikator strefy czasowej.
- baseUtcOffset
- TimeSpan
Obiekt reprezentujący różnicę czasu między tą strefą czasową a uniwersalnym czasem koordynowanym (UTC).
- displayName
- String
Nazwa wyświetlana nowej strefy czasowej.
- standardDisplayName
- String
Nazwa czasu standardowego nowej strefy czasowej.
Zwraca
Nowa strefa czasowa.
Wyjątki
Parametr id
ma wartość null
.
Parametr id
jest pustym ciągiem ("").
-lub-
Parametr baseUtcOffset
nie reprezentuje całkowitej liczby minut.
Parametr baseUtcOffset
jest dłuższy niż 14 godzin lub krótszy niż -14 godzin.
Przykłady
Poniższy przykład tworzy niestandardową strefę czasową dla regionów Mawson i Holme Bay na Antarktydzie. Następnie wyświetla wynik konwersji czasu lokalnego na czas w nowej strefie czasowej.
string displayName = "(GMT+06:00) Antarctica/Mawson Time";
string standardName = "Mawson Time";
TimeSpan offset = new TimeSpan(06, 00, 00);
TimeZoneInfo mawson = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName);
Console.WriteLine("The current time is {0} {1}",
TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.Local, mawson),
mawson.StandardName);
let displayName = "(GMT+06:00) Antarctica/Mawson Time"
let standardName = "Mawson Time"
let offset = TimeSpan(06, 00, 00)
let mawson = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName)
printfn $"The current time is {TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.Local, mawson)} {mawson.StandardName}"
Dim displayName As String = "(GMT+06:00) Antarctica/Mawson Time"
Dim standardName As String = "Mawson Time"
Dim offset As TimeSpan = New TimeSpan(06, 00, 00)
Dim mawson As TimeZoneInfo = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName)
Console.WriteLine("The current time is {0} {1}", _
TimeZoneInfo.ConvertTime(Date.Now, TimeZoneInfo.Local, mawson), _
mawson.StandardName)
Uwagi
To przeciążenie CreateCustomTimeZone(String, TimeSpan, String, String) metody jest odpowiednie do tworzenia strefy czasowej, która nie ma korekt (czyli strefy czasowej, która nie obsługuje czasu letniego). Aby zdefiniować strefę czasową obejmującą korekty czasu letniego, użyj TimeZoneInfo.CreateCustomTimeZone metody lub TimeZoneInfo.CreateCustomTimeZone .
W poniższej tabeli przedstawiono relację między parametrami podanymi w metodzie TimeZoneInfo.CreateCustomTimeZone i właściwościami TimeZoneInfo obiektu, które są zwracane przez wywołanie metody.
CreateCustomTimeZone , parametr | Właściwość TimeZoneInfo |
---|---|
id |
Id |
baseUtcOffset |
BaseUtcOffset |
displayName |
DisplayName |
standardDisplayName |
StandardName |
Zazwyczaj nazwa standardowego czasu strefy czasowej i jej identyfikator są takie same. Jednak długość identyfikatora strefy czasowej nie powinna przekraczać 32 znaków. Ciąg przekazany do parametru displayName
jest zgodny z dość standardowym formatem. Pierwszą częścią nazwy wyświetlanej jest przesunięcie podstawowe strefy czasowej z uniwersalnego czasu koordynowanego, który jest wskazywany przez akronim GMT (dla Greenwich Mean Time), ujęty w nawiasy. Następuje po nim ciąg, który identyfikuje samą strefę czasową lub co najmniej jedno miasto, regiony lub kraje w strefie czasowej lub oba te elementy. Na przykład:
(GMT+02:00) Athens, Beirut, Istanbul, Minsk
(GMT-02:00) Mid-Atlantic
(GMT-07:00) Mountain Time (US & Canada)
Zobacz też
Dotyczy
CreateCustomTimeZone(String, TimeSpan, String, String, String, TimeZoneInfo+AdjustmentRule[])
- Źródło:
- TimeZoneInfo.cs
- Źródło:
- TimeZoneInfo.cs
- Źródło:
- TimeZoneInfo.cs
Tworzy niestandardową strefę czasową z określonym identyfikatorem, przesunięciem z uniwersalnego czasu koordynowanego (UTC), nazwą wyświetlaną, nazwą czasową standardową, nazwą czasu letniego i regułami czasu letniego.
public:
static TimeZoneInfo ^ CreateCustomTimeZone(System::String ^ id, TimeSpan baseUtcOffset, System::String ^ displayName, System::String ^ standardDisplayName, System::String ^ daylightDisplayName, cli::array <TimeZoneInfo::AdjustmentRule ^> ^ adjustmentRules);
public static TimeZoneInfo CreateCustomTimeZone (string id, TimeSpan baseUtcOffset, string? displayName, string? standardDisplayName, string? daylightDisplayName, TimeZoneInfo.AdjustmentRule[]? adjustmentRules);
public static TimeZoneInfo CreateCustomTimeZone (string id, TimeSpan baseUtcOffset, string displayName, string standardDisplayName, string daylightDisplayName, TimeZoneInfo.AdjustmentRule[] adjustmentRules);
static member CreateCustomTimeZone : string * TimeSpan * string * string * string * TimeZoneInfo.AdjustmentRule[] -> TimeZoneInfo
Public Shared Function CreateCustomTimeZone (id As String, baseUtcOffset As TimeSpan, displayName As String, standardDisplayName As String, daylightDisplayName As String, adjustmentRules As TimeZoneInfo.AdjustmentRule()) As TimeZoneInfo
Parametry
- id
- String
Identyfikator strefy czasowej.
- baseUtcOffset
- TimeSpan
Obiekt reprezentujący różnicę czasu między tą strefą czasową a uniwersalnym czasem koordynowanym (UTC).
- displayName
- String
Nazwa wyświetlana nowej strefy czasowej.
- standardDisplayName
- String
Nazwa czasu standardowego nowej strefy czasowej.
- daylightDisplayName
- String
Nazwa czasu letniego nowej strefy czasowej.
- adjustmentRules
- TimeZoneInfo.AdjustmentRule[]
Tablica, która rozszerza podstawowe przesunięcie UTC dla określonego okresu.
Zwraca
TimeZoneInfo Obiekt reprezentujący nową strefę czasową.
Wyjątki
Parametr id
ma wartość null
.
Parametr id
jest pustym ciągiem ("").
-lub-
Parametr baseUtcOffset
nie reprezentuje całkowitej liczby minut.
Parametr baseUtcOffset
jest dłuższy niż 14 godzin lub krótszy niż -14 godzin.
Reguły korekty określone w parametrze adjustmentRules
nakładają się na siebie.
-lub-
Reguły korekty określone w parametrze adjustmentRules
nie są w kolejności chronologicznej.
-lub-
Co najmniej jeden element w pliku adjustmentRules
to null
.
-lub-
Data może mieć zastosowanie do niej wielu reguł korekty.
-lub-
Suma parametru baseUtcOffset
i DaylightDelta wartości co najmniej jednego obiektu w adjustmentRules
tablicy jest większa niż 14 godzin lub mniejsza niż -14 godzin.
Przykłady
Poniższy przykład tworzy niestandardową strefę czasową dla stacji Palmer i wyspy Anvers na Antarktydzie. Następnie konwertuje czas lokalny na czas w nowej strefie czasowej i wyświetla wynik.
// Define transition times to/from DST
TimeZoneInfo.TransitionTime startTransition, endTransition;
startTransition = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 4, 0, 0),
10, 2, DayOfWeek.Sunday);
endTransition = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 3, 0, 0),
3, 2, DayOfWeek.Sunday);
// Define adjustment rule
TimeSpan delta = new TimeSpan(1, 0, 0);
TimeZoneInfo.AdjustmentRule adjustment;
adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(new DateTime(1999, 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-04:00) Antarctica/Palmer Time";
string standardName = "Palmer Time";
string daylightName = "Palmer Daylight Time";
TimeSpan offset = new TimeSpan(-4, 0, 0);
TimeZoneInfo palmer = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName, daylightName, adjustments);
Console.WriteLine("The current time is {0} {1}",
TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.Local, palmer),
palmer.StandardName);
// Define transition times to/from DST
let startTransition =
TimeZoneInfo.TransitionTime.CreateFloatingDateRule(DateTime(1, 1, 1, 4, 0, 0), 10, 2, DayOfWeek.Sunday)
let endTransition =
TimeZoneInfo.TransitionTime.CreateFloatingDateRule(DateTime(1, 1, 1, 3, 0, 0), 3, 2, DayOfWeek.Sunday)
// Define adjustment rule
let delta = TimeSpan(1, 0, 0)
let adjustment =
TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(DateTime(1999, 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-04:00) Antarctica/Palmer Time"
let standardName = "Palmer Time"
let daylightName = "Palmer Daylight Time"
let offset = TimeSpan(-4, 0, 0)
let palmer =
TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName, daylightName, adjustments)
printfn $"The current time is {TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.Local, palmer)} {palmer.StandardName}"
' Define transition times to/from DST
Dim startTransition As TimeZoneInfo.TransitionTime = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(#04:00:00#, 10, 2, DayOfWeek.Sunday)
Dim endTransition As TimeZoneInfo.TransitionTime = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(#3:00:00#, 3, 2, DayOfWeek.Sunday)
' Define adjustment rule
Dim delta As TimeSpan = New TimeSpan(1, 0, 0)
Dim adjustment As TimeZoneInfo.AdjustmentRule = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(#10/01/1999#, 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-04:00) Antarctica/Palmer Time"
Dim standardName As String = "Palmer Standard Time"
Dim daylightName As String = "Palmer Daylight Time"
Dim offset As TimeSpan = New TimeSpan(-4, 0, 0)
Dim palmer As TimeZoneInfo = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName, daylightName, adjustments)
Console.WriteLine("The current time is {0} {1}", _
TimeZoneInfo.ConvertTime(Date.Now, TimeZoneInfo.Local, palmer), _
palmer.StandardName)
Uwagi
To przeciążenie TimeZoneInfo.CreateCustomTimeZone metody jest odpowiednie do tworzenia strefy czasowej, która obsługuje czas letni. Aby zdefiniować strefę czasową, która nie obsługuje czasu letniego, użyj TimeZoneInfo.CreateCustomTimeZone metody lub TimeZoneInfo.CreateCustomTimeZone .
W poniższej tabeli przedstawiono relację między parametrami dostarczonymi do TimeZoneInfo.CreateCustomTimeZone metody a elementami członkowskimi TimeZoneInfo obiektu, które są zwracane przez wywołanie metody.
CreateCustomTimeZone , parametr | Element członkowski TimeZoneInfo |
---|---|
id |
Id |
baseUtcOffset |
BaseUtcOffset |
displayName |
DisplayName |
standardDisplayName |
StandardName |
daylightDisplayName |
DaylightName |
adjustmentRules |
Tablica System.TimeZoneInfo.AdjustmentRule obiektów zwracanych przez metodę GetAdjustmentRules . |
Zazwyczaj nazwa standardowego czasu strefy czasowej i jej identyfikator są takie same. Jednak długość identyfikatora strefy czasowej nie powinna przekraczać 32 znaków. Ciąg przekazany do parametru displayName
jest zgodny z dość standardowym formatem. Pierwszą częścią nazwy wyświetlanej jest przesunięcie podstawowe strefy czasowej z uniwersalnego czasu koordynowanego, który jest wskazywany przez akronim GMT (dla Greenwich Mean Time), ujęty w nawiasy. Następuje po nim ciąg, który identyfikuje samą strefę czasową lub co najmniej jedno miasto, regiony lub kraje w strefie czasowej lub oba te elementy. Na przykład:
(GMT+02:00) Athens, Beirut, Istanbul, Minsk
(GMT-02:00) Mid-Atlantic
(GMT-07:00) Mountain Time (US & Canada)
Parametr baseUtcOffset
definiuje przesunięcie niestandardowej strefy czasowej z uniwersalnego czasu koordynowanego (UTC) dla wszystkich reguł korekty strefy czasowej. Innymi słowy, model obiektów zakłada, TimeZoneInfo że przesunięcie strefy czasowej od UTC jest stałe przez cały czas trwania strefy czasowej i istnieje niezależnie od określonych reguł korekty. Aby odzwierciedlić strefę czasową, która zmieniła przesunięcie od czasu UTC, należy utworzyć nowy obiekt strefy czasowej.
Reguły korekty strefy czasowej są definiowane przez wykonanie następujących czynności:
CreateFloatingDateRule Wywołanie metody lub CreateFixedDateRule w celu zdefiniowania czasu rozpoczęcia i zakończenia przejścia dla każdej reguły korekty.
Wywoływanie CreateAdjustmentRule metody dla każdej reguły korekty.
Przypisywanie reguł korekty do tablicy, którą można przekazać jako
adjustmentRules
parametr.