Практическое руководство. Создание часовых поясов без правил коррекции
Точные сведения о часовом поясе, необходимые приложению, могут отсутствовать в конкретной системе по нескольким причинам:
Часовой пояс не был определен в реестре локальной системы.
Данные о часовом поясе были изменены или удалены из реестра.
Часовой пояс существует, но не введены точные сведения о правилах коррекции часового пояса для конкретного исторического периода.
В этих случаях можно вызвать метод CreateCustomTimeZone, чтобы определить часовой пояс, необходимый приложению. Можно использовать перегрузки этого метода для создания часовых поясов с использованием или без использования правил коррекции. Если для часового пояса поддерживается переход на летнее время, можно определить фиксированные или плавающие правила перехода. (Определения этих терминов содержатся в разделе "Терминология часовых поясов" раздела Общие сведения о часовых поясах.)
![]() |
---|
Пользовательские часовые пояса, созданные посредством вызова метода CreateCustomTimeZone, не добавляются в реестр.Вместо этого к ним можно получить доступ только через ссылку на объект, возвращаемую методом CreateCustomTimeZone. |
В этом разделе показано, как создать часовой пояс без правил коррекции. Чтобы создать часовой пояс, который поддерживает правила коррекции при переходе на летнее время, см. раздел Практическое руководство. Создание часовых поясов с правилами коррекции.
Создание часового пояса без правил коррекции
Определите отображаемое название часового пояса.
Отображаемое название должно соответствовать стандартному формату, в котором смещение часового пояса от универсального синхронизированного времени (UTC) заключается в круглые скобки, после чего следует строка, определяющая часовой пояс, один или несколько городов часового пояса, или одну или несколько стран или регионов в этом часовом поясе.
Определите название стандартного времени часового пояса. Как правило, эта строка также используется в качестве идентификатора часового пояса.
Если необходимо использовать другой идентификатор, отличный от стандартного названия часового пояса, определите идентификатор часового пояса.
Создайте объект TimeSpan, который определяет смещение часового пояса от времени UTC. Часовые пояса со временем, которое позже времени UTC, имеют положительное смещение. Часовые пояса со временем, опережающим время UTC, имеют отрицательное смещение.
Вызовите метод TimeZoneInfo.CreateCustomTimeZone(String, TimeSpan, String, String) для создания нового часового пояса.
Пример
В следующем примере определяется пользовательский часовой пояс для станции Моусон (Антарктика), в котором нет правил коррекции.
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)
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);
Строка, присвоенная свойству DisplayName, соответствует стандартному формату, в котором смещение часового пояса от времени UTC сопровождается понятным описанием часового пояса.
Компиляция кода
Для этого примера требуется:
Чтобы ссылка на System.Core.dll была добавлена в проект.
Чтобы был осуществлен импорт следующих пространств имен:
Imports System.Collections.Generic Imports System.Collections.ObjectModel
using System.Collections.Generic; using System.Collections.ObjectModel;
См. также
Задачи
Практическое руководство. Создание часовых поясов с правилами коррекции
Основные понятия
Общие сведения о часовых поясах