Практическое руководство. Создание часовых поясов без правил коррекции

Точные сведения часового пояса, необходимые приложению, могут не присутствовать в определенной системе по нескольким причинам:

  • Часовой пояс никогда не определен в реестре локальной системы.

  • Данные о часовом поясе были изменены или удалены из реестра.

  • Часовой пояс существует, но не содержит точных сведений о корректировках часового пояса в течение определенного исторического периода.

В таких случаях можно вызвать метод, чтобы определить часовой CreateCustomTimeZone пояс, необходимый приложению. Перегрузки этого метода можно использовать для создания часового пояса с правилами корректировки или без них. Если часовой пояс поддерживает летнее время, можно определить корректировки с помощью фиксированных или плавающих правил корректировки. (Определения этих терминов см. в разделе "Терминология часового пояса" в разделе "Терминология часового пояса"Обзор часового пояса.)

Внимание

Пользовательские часовые пояса, созданные путем вызова CreateCustomTimeZone метода, не добавляются в реестр. Вместо этого они могут быть доступны только через ссылку на объект, возвращаемую вызовом CreateCustomTimeZone метода.

В этом разделе показано, как создать часовой пояс без правил корректировки. Чтобы создать часовой пояс, поддерживающий правила корректировки часового пояса, см. статью "Практическое руководство. Создание часовых поясов с правилами корректировки".

Создание часового пояса без правил корректировки

  1. Определите отображаемое имя часового пояса.

    Отображаемое имя соответствует довольно стандартному формату, в котором смещение часового пояса от координированного универсального времени (UTC) заключено в скобки и за ним следует строка, которая определяет часовой пояс, один или несколько городов в часовом поясе или один или несколько стран или регионов часового пояса.

  2. Определите имя стандартного часового пояса. Как правило, эта строка также используется в качестве идентификатора часового пояса.

  3. Если вы хотите использовать идентификатор, отличный от стандартного имени часового пояса, определите идентификатор часового пояса.

  4. Создайте TimeSpan экземпляр объекта, который определяет смещение часового пояса из UTC. Часовые пояса со временем, превышающими utc, имеют положительное смещение. Часовые пояса с временем, предшествующим utc, имеют отрицательное смещение.

  5. TimeZoneInfo.CreateCustomTimeZone(String, TimeSpan, String, String) Вызовите метод, чтобы создать экземпляр нового часового пояса.

Пример

В следующем примере определяется пользовательский часовой пояс для Mawson, Антарктида, которая не имеет правил корректировки.

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);
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)

Строка, назначенная DisplayName свойству, соответствует стандартному формату, в котором смещение часового пояса из UTC следует понятное описание часового пояса.

Компиляция кода

Для этого примера требуются:

  • Импортируются следующие пространства имен:

    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    
    Imports System.Collections.Generic
    Imports System.Collections.ObjectModel
    
    

См. также