TimeZoneInfo.CreateCustomTimeZone Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет часовой пояс, который не найден на локальном компьютере.
Перегрузки
| Имя | Описание |
|---|---|
| CreateCustomTimeZone(String, TimeSpan, String, String, String, TimeZoneInfo+AdjustmentRule[], Boolean) |
Создает пользовательский часовой пояс с указанным идентификатором, смещением от координированного универсального времени (UTC), отображаемого имени, стандартного имени времени, имени летнего времени, правил летнего времени и значения, указывающего, отражает ли возвращаемый объект сведения о времени летнего времени. |
| CreateCustomTimeZone(String, TimeSpan, String, String) |
Создает пользовательский часовой пояс с указанным идентификатором, смещением от координированного универсального времени (UTC), отображаемого имени и стандартного отображаемого имени времени. |
| CreateCustomTimeZone(String, TimeSpan, String, String, String, TimeZoneInfo+AdjustmentRule[]) |
Создает настраиваемый часовой пояс с заданным идентификатором, смещением от координированного универсального времени (UTC), отображаемого имени, стандартного имени времени, имени летнего времени и правил летнего времени. |
CreateCustomTimeZone(String, TimeSpan, String, String, String, TimeZoneInfo+AdjustmentRule[], Boolean)
- Исходный код:
- TimeZoneInfo.cs
- Исходный код:
- TimeZoneInfo.cs
- Исходный код:
- TimeZoneInfo.cs
- Исходный код:
- TimeZoneInfo.cs
- Исходный код:
- TimeZoneInfo.cs
Создает пользовательский часовой пояс с указанным идентификатором, смещением от координированного универсального времени (UTC), отображаемого имени, стандартного имени времени, имени летнего времени, правил летнего времени и значения, указывающего, отражает ли возвращаемый объект сведения о времени летнего времени.
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
Параметры
- id
- String
Идентификатор часового пояса.
- baseUtcOffset
- TimeSpan
Объект TimeSpan , представляющий разницу времени между этим часовом поясом и универсальным временем (UTC).
- displayName
- String
Отображаемое имя нового часового пояса.
- standardDisplayName
- String
Стандартное имя часового пояса нового часового пояса.
- daylightDisplayName
- String
Имя нового часового пояса.
- adjustmentRules
- TimeZoneInfo.AdjustmentRule[]
Массив TimeZoneInfo.AdjustmentRule объектов, расширяющих базовое смещение в формате UTC за определенный период.
- disableDaylightSavingTime
- Boolean
true Значение , чтобы отменить любые сведения adjustmentRules , связанные с временем, связанные с новым объектом; в противном случае false.
Возвращаемое значение
Новый часовой пояс. Если параметр имеет значениеtrue, возвращаемый disableDaylightSavingTime объект не имеет данных о летнем времени.
Исключения
Параметр id имеет значение null.
Параметр id является пустой строкой ("").
–или–
Параметр baseUtcOffset не представляет целое количество минут.
Параметр baseUtcOffset превышает 14 часов или меньше -14 часов.
Правила корректировки, указанные в параметре adjustmentRules , перекрываются.
–или–
Правила корректировки, указанные в параметре adjustmentRules , не находятся в хронологическом порядке.
–или–
Одним или несколькими элементами являются adjustmentRulesnull.
–или–
К дате может применяться несколько правил корректировки.
–или–
baseUtcOffset Сумма параметра и DaylightDelta значение одного или нескольких объектов в adjustmentRules массиве превышает 14 часов или меньше -14 часов.
Примеры
В следующем примере создается настраиваемый часовой пояс для станции Палмера и острова Анверс в Антарктиде. Он задает disableDaylightSavingTime параметр в вызове TimeZoneInfo.CreateCustomTimeZone метода true. Затем в нем отображается имя нового часового пояса для летнего времени, если оно присутствует, а также количество правил корректировки, чтобы убедиться, что новый часовой пояс не имеет сведений о времени с летнего времени.
// 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)
Комментарии
Эту перегрузку метода можно использовать для создания пользовательского часового пояса TimeZoneInfo.CreateCustomTimeZone , поддержка которого может определяться условиями во время выполнения.
В следующей таблице показана связь между параметрами, предоставляемыми TimeZoneInfo.CreateCustomTimeZone методу, и элементами TimeZoneInfo объекта, возвращаемым вызовом метода.
| Параметр CreateCustomTimeZone | Свойство TimeZoneInfo |
|---|---|
id |
Id |
baseUtcOffset |
BaseUtcOffset |
displayName |
DisplayName |
standardDisplayName |
StandardName |
daylightDisplayName |
DaylightNameЗначение falseString.Empty, если disableDaylightSavingTimedisableDaylightSavingTime имеет значение true. |
adjustmentRules |
Массив объектов, возвращаемых методом disableDaylightSavingTimeGetAdjustmentRules, если имеет значениеfalse; пустой массивTimeZoneInfo.AdjustmentRule, возвращаемый GetAdjustmentRules методом, если disableDaylightSavingTime естьtrue. |
disableDaylightSavingTime |
Нет SupportsDaylightSavingTime. |
Как правило, стандартное имя часового пояса и его идентификатор совпадают. Однако длина идентификатора часового пояса не должна превышать 32 символов. Строка, переданная параметру displayName , соответствует довольно стандартному формату. Первая часть отображаемого имени — это базовое смещение часового пояса от согласованного универсального времени, которое указывается акронимом GMT (для среднего времени Гринвича), заключенного в скобки. За этим следует строка, которая определяет сам часовой пояс или один или несколько городов, регионов или стран часового пояса или обоих. Рассмотрим пример.
(GMT+02:00) Athens, Beirut, Istanbul, Minsk
(GMT-02:00) Mid-Atlantic
(GMT-07:00) Mountain Time (US & Canada)
Правила корректировки часового пояса определяются следующим образом:
Вызов метода или CreateFloatingDateRuleCreateFixedDateRule метода для определения правил начального и конечного перехода для каждого правила корректировки.
CreateAdjustmentRule Вызов метода для каждого правила корректировки.
Назначение правил корректировки массиву, который можно передать в качестве
adjustmentRulesпараметра.
Если disableDaylightSavingTime параметр имеет значение false, операция этого метода идентична перегрузке TimeZoneInfo.CreateCustomTimeZone . Если disableDaylightSavingTime это trueтак, возвращаемый объект не содержит правил корректировки и DaylightName свойства, значение которого является пустой строкой.
См. также раздел
- Практическое руководство. Создание часовых поясов без правил корректировки
- Практическое руководство. Создание часовых поясов с помощью правил корректировки
Применяется к
CreateCustomTimeZone(String, TimeSpan, String, String)
- Исходный код:
- TimeZoneInfo.cs
- Исходный код:
- TimeZoneInfo.cs
- Исходный код:
- TimeZoneInfo.cs
- Исходный код:
- TimeZoneInfo.cs
- Исходный код:
- TimeZoneInfo.cs
Создает пользовательский часовой пояс с указанным идентификатором, смещением от координированного универсального времени (UTC), отображаемого имени и стандартного отображаемого имени времени.
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
Параметры
- id
- String
Идентификатор часового пояса.
- baseUtcOffset
- TimeSpan
Объект, представляющий разницу времени между этим часовым поясом и согласованным универсальным временем (UTC).
- displayName
- String
Отображаемое имя нового часового пояса.
- standardDisplayName
- String
Имя стандартного часового пояса.
Возвращаемое значение
Новый часовой пояс.
Исключения
Параметр id имеет значение null.
Параметр id является пустой строкой ("").
–или–
Параметр baseUtcOffset не представляет целое количество минут.
Параметр baseUtcOffset превышает 14 часов или меньше -14 часов.
Примеры
В следующем примере создается настраиваемый часовой пояс для регионов Mawson и Holme Bay в Антарктиде. Затем отображается результат преобразования локального времени в время в новом часовом поясе.
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)
Комментарии
Эта перегрузка CreateCustomTimeZone(String, TimeSpan, String, String) метода подходит для создания часового пояса, который не имеет корректировки (т. е. часовой пояс, который не поддерживает летнее время). Чтобы определить часовой пояс, включающий корректировки летнего времени, используйте TimeZoneInfo.CreateCustomTimeZone метод или TimeZoneInfo.CreateCustomTimeZone метод.
В следующей таблице показана связь между параметрами, предоставляемыми TimeZoneInfo.CreateCustomTimeZone методом, и свойствами TimeZoneInfo объекта, возвращаемого вызовом метода.
| Параметр CreateCustomTimeZone | Свойство TimeZoneInfo |
|---|---|
id |
Id |
baseUtcOffset |
BaseUtcOffset |
displayName |
DisplayName |
standardDisplayName |
StandardName |
Как правило, стандартное имя часового пояса и его идентификатор совпадают. Однако длина идентификатора часового пояса не должна превышать 32 символов. Строка, переданная параметру displayName , соответствует довольно стандартному формату. Первая часть отображаемого имени — это базовое смещение часового пояса от согласованного универсального времени, которое указывается акронимом GMT (для среднего времени Гринвича), заключенного в скобки. За этим следует строка, которая определяет сам часовой пояс или один или несколько городов, регионов или стран часового пояса или обоих. Рассмотрим пример.
(GMT+02:00) Athens, Beirut, Istanbul, Minsk
(GMT-02:00) Mid-Atlantic
(GMT-07:00) Mountain Time (US & Canada)
См. также раздел
Применяется к
CreateCustomTimeZone(String, TimeSpan, String, String, String, TimeZoneInfo+AdjustmentRule[])
- Исходный код:
- TimeZoneInfo.cs
- Исходный код:
- TimeZoneInfo.cs
- Исходный код:
- TimeZoneInfo.cs
- Исходный код:
- TimeZoneInfo.cs
- Исходный код:
- TimeZoneInfo.cs
Создает настраиваемый часовой пояс с заданным идентификатором, смещением от координированного универсального времени (UTC), отображаемого имени, стандартного имени времени, имени летнего времени и правил летнего времени.
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
Параметры
- id
- String
Идентификатор часового пояса.
- baseUtcOffset
- TimeSpan
Объект, представляющий разницу времени между этим часовым поясом и согласованным универсальным временем (UTC).
- displayName
- String
Отображаемое имя нового часового пояса.
- standardDisplayName
- String
Стандартное имя часового пояса.
- daylightDisplayName
- String
Имя нового часового пояса.
- adjustmentRules
- TimeZoneInfo.AdjustmentRule[]
Массив, расширяющий базовое смещение в формате UTC за определенный период.
Возвращаемое значение
Объект TimeZoneInfo , представляющий новый часовой пояс.
Исключения
Параметр id имеет значение null.
Параметр id является пустой строкой ("").
–или–
Параметр baseUtcOffset не представляет целое количество минут.
Параметр baseUtcOffset превышает 14 часов или меньше -14 часов.
Правила корректировки, указанные в параметре adjustmentRules , перекрываются.
–или–
Правила корректировки, указанные в параметре adjustmentRules , не находятся в хронологическом порядке.
–или–
Одним или несколькими элементами являются adjustmentRulesnull.
–или–
К дате может применяться несколько правил корректировки.
–или–
baseUtcOffset Сумма параметра и DaylightDelta значение одного или нескольких объектов в adjustmentRules массиве превышает 14 часов или меньше -14 часов.
Примеры
В следующем примере создается настраиваемый часовой пояс для станции Палмера и острова Анверс в Антарктиде. Затем он преобразует локальное время в время в новом часовом поясе и отображает результат.
// 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)
Комментарии
Эта перегрузка TimeZoneInfo.CreateCustomTimeZone метода подходит для создания часового пояса, поддерживающего летнее время. Чтобы определить часовой пояс, который не поддерживает летнее время, используйте TimeZoneInfo.CreateCustomTimeZone метод или TimeZoneInfo.CreateCustomTimeZone метод.
В следующей таблице показана связь между параметрами, предоставляемыми TimeZoneInfo.CreateCustomTimeZone методу, и элементами TimeZoneInfo объекта, возвращаемым вызовом метода.
| Параметр CreateCustomTimeZone | Член TimeZoneInfo |
|---|---|
id |
Id |
baseUtcOffset |
BaseUtcOffset |
displayName |
DisplayName |
standardDisplayName |
StandardName |
daylightDisplayName |
DaylightName |
adjustmentRules |
Массив System.TimeZoneInfo.AdjustmentRule объектов, возвращаемых методом GetAdjustmentRules . |
Как правило, стандартное имя часового пояса и его идентификатор совпадают. Однако длина идентификатора часового пояса не должна превышать 32 символов. Строка, переданная параметру displayName , соответствует довольно стандартному формату. Первая часть отображаемого имени — это базовое смещение часового пояса от согласованного универсального времени, которое указывается акронимом GMT (для среднего времени Гринвича), заключенного в скобки. За этим следует строка, которая определяет сам часовой пояс или один или несколько городов, регионов или стран часового пояса или обоих. Рассмотрим пример.
(GMT+02:00) Athens, Beirut, Istanbul, Minsk
(GMT-02:00) Mid-Atlantic
(GMT-07:00) Mountain Time (US & Canada)
Параметр baseUtcOffset определяет смещение настраиваемого часового пояса от координированного универсального времени (UTC) для всех правил корректировки часового пояса. Другими словами, объектная TimeZoneInfo модель предполагает, что смещение часового пояса от UTC является константой в течение всего времени существования часового пояса и существует независимо от определенных правил корректировки. Чтобы отразить часовой пояс, который изменил смещение с UTC, необходимо создать новый объект часового пояса.
Правила корректировки часового пояса определяются следующим образом:
Вызов метода или CreateFloatingDateRuleCreateFixedDateRule метода для определения времени начала и окончания перехода для каждого правила корректировки.
CreateAdjustmentRule Вызов метода для каждого правила корректировки.
Назначение правил корректировки массиву, который можно передать в качестве
adjustmentRulesпараметра.