TimeZoneInfo.CreateCustomTimeZone Método

Definição

Define um fuso horário que não foi encontrado no computador local.

Sobrecargas

CreateCustomTimeZone(String, TimeSpan, String, String, String, TimeZoneInfo+AdjustmentRule[], Boolean)

Cria um fuso horário personalizado com um identificador especificado, um deslocamento do UTC (Tempo Universal Coordenado), um nome de exibição, um nome de hora padrão, um nome de horário de verão, regras de horário de verão e um valor que indica se o objeto retornado reflete as informações sobre horário de verão.

CreateCustomTimeZone(String, TimeSpan, String, String)

Cria um fuso horário personalizado com um identificador especificado, um desvio de UTC (Tempo Universal Coordenado), um nome de exibição e um nome de exibição do horário padrão.

CreateCustomTimeZone(String, TimeSpan, String, String, String, TimeZoneInfo+AdjustmentRule[])

Cria um fuso horário personalizado com um identificador especificado, um deslocamento do UTC (Tempo Universal Coordenado), um nome de exibição, um nome de hora padrão e um nome e regras do horário de verão.

CreateCustomTimeZone(String, TimeSpan, String, String, String, TimeZoneInfo+AdjustmentRule[], Boolean)

Origem:
TimeZoneInfo.cs
Origem:
TimeZoneInfo.cs
Origem:
TimeZoneInfo.cs

Cria um fuso horário personalizado com um identificador especificado, um deslocamento do UTC (Tempo Universal Coordenado), um nome de exibição, um nome de hora padrão, um nome de horário de verão, regras de horário de verão e um valor que indica se o objeto retornado reflete as informações sobre horário de verão.

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

Parâmetros

id
String

O identificador do fuso horário.

baseUtcOffset
TimeSpan

Um objeto TimeSpan que representa a diferença de tempo entre esse fuso horário e o UTC (Tempo Universal Coordenado).

displayName
String

O nome de exibição do novo fuso horário.

standardDisplayName
String

O nome da hora padrão do novo fuso horário.

daylightDisplayName
String

O nome do horário de versão do novo fuso horário.

adjustmentRules
TimeZoneInfo.AdjustmentRule[]

Uma matriz de objetos TimeZoneInfo.AdjustmentRule que aumenta o deslocamento base do UTC para um período específico.

disableDaylightSavingTime
Boolean

true para descartar informações relacionadas ao horário de verão presentes no adjustmentRules com o novo objeto; caso contrário, false.

Retornos

O novo fuso horário. Se o parâmetro disableDaylightSavingTime é true, o objeto retornado não tem nenhum dado de horário de verão.

Exceções

O parâmetro id é null.

O parâmetro id é uma cadeia de caracteres vazia ("").

- ou -

O parâmetro baseUtcOffset não representa um número inteiro de minutos.

O parâmetro baseUtcOffset é maior que 14 horas ou menor que -14 horas.

As regras de ajuste especificadas no parâmetro adjustmentRules se sobrepõem.

- ou -

As regras de ajuste especificadas no parâmetro adjustmentRules não estão em ordem cronológica.

- ou -

Um ou mais elementos em adjustmentRules são null.

- ou -

Uma data pode ter várias regras de ajuste aplicadas a ela.

- ou -

A soma do parâmetro baseUtcOffset e do valor DaylightDelta de um ou mais objetos na matriz adjustmentRules é maior que 14 horas ou menor que -14 horas.

Exemplos

O exemplo a seguir cria um fuso horário personalizado para a estação Palmer e a Ilha Anvers na Antártida. Ele define o disableDaylightSavingTime parâmetro na chamada para o TimeZoneInfo.CreateCustomTimeZone método como true. Em seguida, ele exibe o nome do horário de verão do novo fuso horário, se houver, e o número de regras de ajuste para confirmar que o novo fuso horário não tem informações de horário de verão.

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

Comentários

Você pode usar essa sobrecarga do TimeZoneInfo.CreateCustomTimeZone método para criar um fuso horário personalizado cujo suporte para o horário de verão pode ser determinado por condições em tempo de execução.

A tabela a TimeZoneInfo seguir mostra a relação entre os parâmetros fornecidos ao TimeZoneInfo.CreateCustomTimeZone método e os membros do objeto que são retornados pela chamada de método.

Parâmetro CreateCustomTimeZone Propriedade TimeZoneInfo
id Id
baseUtcOffset BaseUtcOffset
displayName DisplayName
standardDisplayName StandardName
daylightDisplayName DaylightName se disableDaylightSavingTime for false; String.Empty se disableDaylightSavingTime for true.
adjustmentRules Uma matriz de TimeZoneInfo.AdjustmentRule objetos retornados pelo GetAdjustmentRules método se disableDaylightSavingTime for false; uma matriz vazia retornada pelo GetAdjustmentRules método se disableDaylightSavingTime for true.
disableDaylightSavingTime Não SupportsDaylightSavingTime.

Normalmente, o nome de hora padrão do fuso horário e seu identificador são os mesmos. No entanto, o comprimento do identificador do fuso horário não deve exceder 32 caracteres. A cadeia de caracteres passada para o displayName parâmetro segue um formato bastante padrão. A primeira parte do nome de exibição é o deslocamento base do fuso horário do Tempo Universal Coordenado, que é indicado pelo acrônimo GMT (Hora de Greenwich), entre parênteses. Isso é seguido por uma cadeia de caracteres que identifica o próprio fuso horário ou uma ou mais cidades, regiões ou países no fuso horário ou ambos. Por exemplo:

(GMT+02:00) Athens, Beirut, Istanbul, Minsk
(GMT-02:00) Mid-Atlantic
(GMT-07:00) Mountain Time (US & Canada)

As regras de ajuste de um fuso horário são definidas fazendo o seguinte:

  1. Chamar o CreateFloatingDateRule método ou CreateFixedDateRule para definir as regras de transição inicial e final para cada regra de ajuste.

  2. Chamando o CreateAdjustmentRule método para cada regra de ajuste.

  3. Atribuir as regras de ajuste a uma matriz que pode ser passada como o adjustmentRules parâmetro .

Se disableDaylightSavingTime o parâmetro for false, a operação desse método será idêntica à TimeZoneInfo.CreateCustomTimeZone sobrecarga. Se disableDaylightSavingTime for true, o objeto retornado não inclui nenhuma regra de ajuste e uma DaylightName propriedade cujo valor é uma cadeia de caracteres vazia.

Confira também

Aplica-se a

CreateCustomTimeZone(String, TimeSpan, String, String)

Origem:
TimeZoneInfo.cs
Origem:
TimeZoneInfo.cs
Origem:
TimeZoneInfo.cs

Cria um fuso horário personalizado com um identificador especificado, um desvio de UTC (Tempo Universal Coordenado), um nome de exibição e um nome de exibição do horário padrão.

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

Parâmetros

id
String

O identificador do fuso horário.

baseUtcOffset
TimeSpan

Um objeto que representa a diferença de horas entre esse fuso horário e o UTC (Horário Universal Coordenado).

displayName
String

O nome de exibição do novo fuso horário.

standardDisplayName
String

O nome do horário padrão do novo fuso horário.

Retornos

O novo fuso horário.

Exceções

O parâmetro id é null.

O parâmetro id é uma cadeia de caracteres vazia ("").

- ou -

O parâmetro baseUtcOffset não representa um número inteiro de minutos.

O parâmetro baseUtcOffset é maior que 14 horas ou menor que -14 horas.

Exemplos

O exemplo a seguir cria um fuso horário personalizado para as regiões de Mawson e Holme Bay da Antártida. Em seguida, ele exibe o resultado da conversão da hora local para a hora no novo fuso horário.

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)

Comentários

Essa sobrecarga do CreateCustomTimeZone(String, TimeSpan, String, String) método é adequada para criar um fuso horário sem ajustes (ou seja, um fuso horário que não dá suporte ao horário de verão). Para definir um fuso horário que inclua ajustes para o horário de verão, use o TimeZoneInfo.CreateCustomTimeZone método ou TimeZoneInfo.CreateCustomTimeZone .

A tabela a seguir mostra a relação entre os parâmetros fornecidos para o TimeZoneInfo.CreateCustomTimeZone método e as propriedades do TimeZoneInfo objeto que são retornadas pela chamada de método.

Parâmetro CreateCustomTimeZone Propriedade TimeZoneInfo
id Id
baseUtcOffset BaseUtcOffset
displayName DisplayName
standardDisplayName StandardName

Normalmente, o nome de hora padrão do fuso horário e seu identificador são os mesmos. No entanto, o comprimento do identificador do fuso horário não deve exceder 32 caracteres. A cadeia de caracteres passada para o displayName parâmetro segue um formato bastante padrão. A primeira parte do nome de exibição é o deslocamento base do fuso horário do Tempo Universal Coordenado, que é indicado pelo acrônimo GMT (Hora de Greenwich), entre parênteses. Isso é seguido por uma cadeia de caracteres que identifica o próprio fuso horário ou uma ou mais cidades, regiões ou países no fuso horário ou ambos. Por exemplo:

(GMT+02:00) Athens, Beirut, Istanbul, Minsk
(GMT-02:00) Mid-Atlantic
(GMT-07:00) Mountain Time (US & Canada)

Confira também

Aplica-se a

CreateCustomTimeZone(String, TimeSpan, String, String, String, TimeZoneInfo+AdjustmentRule[])

Origem:
TimeZoneInfo.cs
Origem:
TimeZoneInfo.cs
Origem:
TimeZoneInfo.cs

Cria um fuso horário personalizado com um identificador especificado, um deslocamento do UTC (Tempo Universal Coordenado), um nome de exibição, um nome de hora padrão e um nome e regras do horário de verão.

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

Parâmetros

id
String

O identificador do fuso horário.

baseUtcOffset
TimeSpan

Um objeto que representa a diferença de horas entre esse fuso horário e o UTC (Horário Universal Coordenado).

displayName
String

O nome de exibição do novo fuso horário.

standardDisplayName
String

O nome da hora padrão do novo fuso horário.

daylightDisplayName
String

O nome do horário de versão do novo fuso horário.

adjustmentRules
TimeZoneInfo.AdjustmentRule[]

Uma matriz que aumenta a diferença UTC de base para um período específico.

Retornos

Um objeto TimeZoneInfo que representa o novo fuso horário.

Exceções

O parâmetro id é null.

O parâmetro id é uma cadeia de caracteres vazia ("").

- ou -

O parâmetro baseUtcOffset não representa um número inteiro de minutos.

O parâmetro baseUtcOffset é maior que 14 horas ou menor que -14 horas.

As regras de ajuste especificadas no parâmetro adjustmentRules se sobrepõem.

- ou -

As regras de ajuste especificadas no parâmetro adjustmentRules não estão em ordem cronológica.

- ou -

Um ou mais elementos em adjustmentRules são null.

- ou -

Uma data pode ter várias regras de ajuste aplicadas a ela.

- ou -

A soma do parâmetro baseUtcOffset e do valor DaylightDelta de um ou mais objetos na matriz adjustmentRules é maior que 14 horas ou menor que -14 horas.

Exemplos

O exemplo a seguir cria um fuso horário personalizado para a estação Palmer e a Ilha Anvers na Antártida. Em seguida, ele converte a hora local para a hora no novo fuso horário e exibe o resultado.

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

Comentários

Essa sobrecarga do TimeZoneInfo.CreateCustomTimeZone método é adequada para criar um fuso horário que dá suporte ao horário de verão. Para definir um fuso horário que não dá suporte ao horário de verão, use o TimeZoneInfo.CreateCustomTimeZone método ou TimeZoneInfo.CreateCustomTimeZone .

A tabela a seguir mostra a relação entre os parâmetros fornecidos ao TimeZoneInfo.CreateCustomTimeZone método e os membros do TimeZoneInfo objeto que são retornados pela chamada de método.

Parâmetro CreateCustomTimeZone Membro TimeZoneInfo
id Id
baseUtcOffset BaseUtcOffset
displayName DisplayName
standardDisplayName StandardName
daylightDisplayName DaylightName
adjustmentRules Uma matriz de System.TimeZoneInfo.AdjustmentRule objetos retornados pelo GetAdjustmentRules método .

Normalmente, o nome de horário padrão do fuso horário e seu identificador são os mesmos. No entanto, o comprimento do identificador do fuso horário não deve exceder 32 caracteres. A cadeia de caracteres passada para o displayName parâmetro segue um formato bastante padrão. A primeira parte do nome de exibição é o deslocamento base do fuso horário do Tempo Universal Coordenado, que é indicado pelo acrônimo GMT (Hora de Greenwich), entre parênteses. Isso é seguido por uma cadeia de caracteres que identifica o fuso horário em si, ou uma ou mais das cidades, regiões ou países no fuso horário ou ambos. Por exemplo:

(GMT+02:00) Athens, Beirut, Istanbul, Minsk
(GMT-02:00) Mid-Atlantic
(GMT-07:00) Mountain Time (US & Canada)

O baseUtcOffset parâmetro define o deslocamento do fuso horário personalizado do UTC (Tempo Universal Coordenado) para todas as regras de ajuste do fuso horário. Em outras palavras, o TimeZoneInfo modelo de objeto pressupõe que o deslocamento do fuso horário do UTC é constante durante toda a vida útil do fuso horário e existe independentemente de regras de ajuste específicas. Para refletir um fuso horário que alterou seu deslocamento de UTC, você deve criar um novo objeto de fuso horário.

As regras de ajuste de um fuso horário são definidas fazendo o seguinte:

  1. Chamando o CreateFloatingDateRule método ou CreateFixedDateRule para definir o tempo de transição inicial e final para cada regra de ajuste.

  2. Chamando o CreateAdjustmentRule método para cada regra de ajuste.

  3. Atribuir as regras de ajuste a uma matriz que pode ser passada como o adjustmentRules parâmetro .

Confira também

Aplica-se a