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