Como: criar fusos horários sem regras de ajuste

As informações precisas de fuso horário exigidas por um aplicativo podem não estar presentes em um sistema específico por vários motivos:

  • O fuso horário nunca foi definido no registro do sistema local.

  • Os dados sobre o fuso horário foram modificados ou removidos do registro.

  • O fuso horário existe, mas não tem informações precisas sobre ajustes de fuso horário para um determinado período histórico.

Nesses casos, você pode chamar o método CreateCustomTimeZone para definir o fuso horário exigido pelo aplicativo. Você pode usar as sobrecargas desse método para criar um fuso horário com ou sem regras de ajuste. Se o fuso horário de verão der suporte ao horário de verão, você poderá definir ajustes com regras de ajuste fixas ou flutuantes. (Para definições desses termos, confira a seção "Terminologia do fuso horário" na Visão geral do fuso horário.)

Importante

Fusos horários personalizados criados chamando o método CreateCustomTimeZone não são adicionados ao registro. Em vez disso, eles só podem ser acessados por meio da referência de objeto retornada pela chamada de método CreateCustomTimeZone.

Este tópico mostra como criar um fuso horário sem regras de ajuste. Para criar um fuso horário compatível com regras de ajuste de horário de verão, confira Como criar fusos horários com regras de ajuste.

Para criar um fuso horário sem regras de ajuste

  1. Defina o nome de exibição do fuso horário.

    O nome de exibição segue um formato bastante padrão no qual o deslocamento do fuso horário do UTC (Tempo Universal Coordenado) é colocado entre parênteses e é seguido por uma cadeia de caracteres que identifica o fuso horário, uma ou mais das cidades no fuso horário ou um ou mais dos países ou regiões no fuso horário.

  2. O nome do horário padrão do novo fuso horário. Normalmente, essa cadeia de caracteres também é usada como o identificador do fuso horário.

  3. Se você quiser usar um identificador diferente do nome padrão do fuso horário, defina o identificador de fuso horário.

  4. Instancie um objeto TimeSpan que define o deslocamento do fuso horário de UTC. Fusos horários com horários posteriores ao UTC têm um deslocamento positivo. Fusos horários com horários anteriores ao UTC têm um deslocamento negativo.

  5. Chame o método TimeZoneInfo.CreateCustomTimeZone(String, TimeSpan, String, String) para instanciar o novo fuso horário.

Exemplo

O exemplo a seguir define um fuso horário personalizado para Mawson, Antártida, que não tem regras de ajuste.

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)

A cadeia de caracteres atribuída à propriedade DisplayName segue um formato padrão no qual o deslocamento do fuso horário de UTC é seguido por uma descrição amigável do fuso horário.

Compilando o código

Este exemplo requer:

  • Que os seguintes namespaces sejam importados:

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

Confira também