Partilhar via


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 registo.

  • 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 CreateCustomTimeZone método para definir o fuso horário exigido pelo seu 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 suportar o horário de verão, você poderá definir ajustes com regras de ajuste fixas ou flutuantes. (Para definições destes termos, consulte a secção "Terminologia de fuso horário" em Visão geral do fuso horário.)

Importante

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

Este tópico mostra como criar um fuso horário sem regras de ajuste. Para criar um fuso horário que ofereça suporte a regras de ajuste de horário de verão, consulte Como criar fusos horários com regras de ajuste.

Para criar um fuso horário sem regras de ajuste

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

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

  2. Defina o nome da hora padrão do fuso horário. Normalmente, essa cadeia de caracteres também é usada como identificador de 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 TimeSpan objeto que define o deslocamento do fuso horário do UTC. Os fusos horários com horários posteriores ao UTC têm uma compensação positiva. Os fusos horários com horários anteriores ao UTC têm uma compensação negativa.

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

Exemplo

O exemplo a seguir define um fuso horário personalizado para Mawson, Antarctica, 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 à DisplayName propriedade segue um formato padrão no qual o deslocamento do fuso horário do UTC é seguido por uma descrição amigável do fuso horário.

Compilação do 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
    
    

Consulte também