Compartilhar via


TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule Método

Definição

Sobrecargas

CreateAdjustmentRule(DateTime, DateTime, TimeSpan, TimeZoneInfo+TransitionTime, TimeZoneInfo+TransitionTime)

Cria uma nova regra de ajuste para um determinado fuso horário.

CreateAdjustmentRule(DateTime, DateTime, TimeSpan, TimeZoneInfo+TransitionTime, TimeZoneInfo+TransitionTime, TimeSpan)

Cria uma nova regra de ajuste para um determinado fuso horário.

CreateAdjustmentRule(DateTime, DateTime, TimeSpan, TimeZoneInfo+TransitionTime, TimeZoneInfo+TransitionTime)

Cria uma nova regra de ajuste para um determinado fuso horário.

public:
 static TimeZoneInfo::AdjustmentRule ^ CreateAdjustmentRule(DateTime dateStart, DateTime dateEnd, TimeSpan daylightDelta, TimeZoneInfo::TransitionTime daylightTransitionStart, TimeZoneInfo::TransitionTime daylightTransitionEnd);
public static TimeZoneInfo.AdjustmentRule CreateAdjustmentRule (DateTime dateStart, DateTime dateEnd, TimeSpan daylightDelta, TimeZoneInfo.TransitionTime daylightTransitionStart, TimeZoneInfo.TransitionTime daylightTransitionEnd);
static member CreateAdjustmentRule : DateTime * DateTime * TimeSpan * TimeZoneInfo.TransitionTime * TimeZoneInfo.TransitionTime -> TimeZoneInfo.AdjustmentRule
Public Shared Function CreateAdjustmentRule (dateStart As DateTime, dateEnd As DateTime, daylightDelta As TimeSpan, daylightTransitionStart As TimeZoneInfo.TransitionTime, daylightTransitionEnd As TimeZoneInfo.TransitionTime) As TimeZoneInfo.AdjustmentRule

Parâmetros

dateStart
DateTime

A data efetiva da regra de ajuste. Se o valor do parâmetro dateStart for DateTime.MinValue.Date, essa será a primeira regra de ajuste em vigor para um fuso horário.

dateEnd
DateTime

A última data em que a regra de ajuste estava em vigor. Se o valor do parâmetro dateEnd for DateTime.MaxValue.Date, a regra de ajuste não terá nenhuma data de término.

daylightDelta
TimeSpan

A alteração de tempo que resulta do ajuste. Esse valor é adicionado à propriedade BaseUtcOffset de fuso horário para obter a compensação correta de horário em UTC (Tempo Universal Coordenado). Este valor pode variar de -14 a 14.

daylightTransitionStart
TimeZoneInfo.TransitionTime

Um objeto que define o início do horário de verão.

daylightTransitionEnd
TimeZoneInfo.TransitionTime

Um objeto que define o final do horário de verão.

Retornos

TimeZoneInfo.AdjustmentRule

Um objeto que representa a nova regra de ajuste.

Exceções

A propriedade Kind do dateStart ou o parâmetro dateEnd não é igual ao parâmetro Unspecified.

- ou - O parâmetro daylightTransitionStart é igual ao parâmetro daylightTransitionEnd.

- ou - O parâmetro dateStart ou dateEnd inclui um valor de hora do dia.

dateEnd é anterior a dateStart.

- ou - daylightDelta é menor que -14 ou maior que 14.

- ou - A propriedade Milliseconds do parâmetro daylightDelta não é igual a 0.

- ou - A propriedade Ticks do parâmetro daylightDelta não é igual a um número inteiro de segundos.

Exemplos

O exemplo a seguir cria um fuso horário padrão central alternativo e define três regras de ajuste para os períodos 1976-1986, 1987-2006 e 2007 e posteriores. Essas regras são adicionadas a um objeto genérico List<T> cujos elementos são copiados para uma TimeZoneInfo.AdjustmentRule matriz. Essa matriz é usada na chamada para o TimeZoneInfo.CreateCustomTimeZone(String, TimeSpan, String, String, String, TimeZoneInfo+AdjustmentRule[]) método.

// Create alternate Central Standard Time to include historical time zone information
//
// Declare necessary TimeZoneInfo.AdjustmentRule objects for time zone
TimeSpan delta = new TimeSpan(1, 0, 0);
TimeZoneInfo.AdjustmentRule adjustment;
List<TimeZoneInfo.AdjustmentRule> adjustmentList = new List<TimeZoneInfo.AdjustmentRule>();
// Declare transition time variables to hold transition time information
TimeZoneInfo.TransitionTime transitionRuleStart, transitionRuleEnd;

// Define end rule (for 1976-2006)
transitionRuleEnd = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 2, 0, 0), 10, 5, DayOfWeek.Sunday);
// Define rule (1976-1986)
transitionRuleStart = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 2, 0, 0), 04, 05, DayOfWeek.Sunday);
adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(new DateTime(1976, 1, 1), new DateTime(1986, 12, 31), delta, transitionRuleStart, transitionRuleEnd);
adjustmentList.Add(adjustment);
// Define rule (1987-2006)  
transitionRuleStart = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 2, 0, 0), 04, 01, DayOfWeek.Sunday);
adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(new DateTime(1987, 1, 1), new DateTime(2006, 12, 31), delta, transitionRuleStart, transitionRuleEnd);
adjustmentList.Add(adjustment);
// Define rule (2007- )  
transitionRuleStart = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 2, 0, 0), 03, 02, DayOfWeek.Sunday);
transitionRuleEnd = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 2, 0, 0), 11, 01, DayOfWeek.Sunday);
adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(new DateTime(2007, 01, 01), DateTime.MaxValue.Date, delta, transitionRuleStart, transitionRuleEnd);
adjustmentList.Add(adjustment);
              
// Create custom U.S. Central Standard Time zone         
TimeZoneInfo.CreateCustomTimeZone("Central Standard Time", new TimeSpan(-6, 0, 0), 
                "(GMT-06:00) Central Time (US Only)", "Central Standard Time", 
                "Central Daylight Time", adjustmentList.ToArray());
// Create alternate Central Standard Time to include historical time zone information
let delta = TimeSpan(1, 0, 0)
let adjustmentList = ResizeArray()

// Define end rule (for 1976-2006)
let transitionRuleEnd = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(DateTime(1, 1, 1, 2, 0, 0), 10, 5, DayOfWeek.Sunday)
// Define rule (1976-1986)
let transitionRuleStart = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(DateTime(1, 1, 1, 2, 0, 0), 04, 05, DayOfWeek.Sunday)
TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(DateTime(1976, 1, 1), DateTime(1986, 12, 31), delta, transitionRuleStart, transitionRuleEnd)
|> adjustmentList.Add
// Define rule (1987-2006)  
let transitionRuleStart = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(DateTime(1, 1, 1, 2, 0, 0), 04, 01, DayOfWeek.Sunday)
TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(DateTime(1987, 1, 1), DateTime(2006, 12, 31), delta, transitionRuleStart, transitionRuleEnd)
|> adjustmentList.Add
// Define rule (2007- )  
let transitionRuleStart = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(DateTime(1, 1, 1, 2, 0, 0), 03, 02, DayOfWeek.Sunday)
let transitionRuleEnd = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(DateTime(1, 1, 1, 2, 0, 0), 11, 01, DayOfWeek.Sunday)
TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(DateTime(2007, 01, 01), DateTime.MaxValue.Date, delta, transitionRuleStart, transitionRuleEnd)
|> adjustmentList.Add
            
// Create custom U.S. Central Standard Time zone         
TimeZoneInfo.CreateCustomTimeZone("Central Standard Time", TimeSpan(-6, 0, 0), 
                                  "(GMT-06:00) Central Time (US Only)", "Central Standard Time", 
                                  "Central Daylight Time", adjustmentList.ToArray())
' Create alternate Central Standard Time to include historical time zone information
'
' Declare necessary TimeZoneInfo.AdjustmentRule objects for time zone
Dim delta As New TimeSpan(1, 0, 0)
Dim adjustment As TimeZoneInfo.AdjustmentRule
Dim adjustmentList As New List(Of TimeZoneInfo.AdjustmentRule)
' Declare transition time variables to hold transition time information
Dim transitionRuleStart, transitionRuleEnd As TimeZoneInfo.TransitionTime

' Define end rule (for 1976-2006)
transitionRuleEnd = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(#02:00:00AM#, 10, 5, DayOfWeek.Sunday)
' Define rule (1976-1986)
transitionRuleStart = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(#2:00:00AM#, 04, 05, DayOfWeek.Sunday)
adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(#01/01/1976#, #12/31/1986#, delta, transitionRuleStart, transitionRuleEnd)
adjustmentList.Add(adjustment)
' Define rule (1987-2006)  
transitionRuleStart = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(#2:00:00AM#, 04, 01, DayOfWeek.Sunday)
adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(#01/01/1987#, #12/31/2006#, delta, transitionRuleStart, transitionRuleEnd)
adjustmentList.Add(adjustment)
' Define rule (2007- )  
transitionRuleStart = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(#2:00:00AM#, 03, 02, DayOfWeek.Sunday)
transitionRuleEnd = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(#2:00:00AM#, 11, 01, DayOfWeek.Sunday)
adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(#01/01/2007#, Date.MaxValue.Date, delta, transitionRuleStart, transitionRuleEnd)
adjustmentList.Add(adjustment)
              
' Create custom U.S. Central Standard Time Zone
TimeZoneInfo.CreateCustomTimeZone("Central Standard Time", New TimeSpan(-6, 0, 0), _
                "(GMT-06:00) Central Time (US Only)", "Central Standard Time", _
                "Central Daylight Time", adjustmentList.ToArray())

Comentários

Você pode usar esse método para criar uma ou mais regras de ajuste para um fuso horário personalizado. Uma matriz dos TimeZoneInfo.AdjustmentRule objetos retornados por chamadas para esse método pode ser passada como o adjustmentRules parâmetro para duas sobrecargas do CreateCustomTimeZone método. O exemplo ilustra esse procedimento.

Observação

O CreateAdjustmentRule método só pode ser usado para definir uma regra de ajuste para um novo fuso horário; ele não pode ser usado para modificar uma regra de ajuste para um fuso horário existente.

Os dateStart parâmetros e os dateEnd parâmetros devem ser valores de data sem um componente de hora ou um ArgumentException é gerado. O componente de hora pode ser removido recuperando um DateTime valor da propriedade de data e hora Date , conforme mostrado nas seguintes instruções:

DateTime.MinValue.Date  
DateTime.MaxValue.Date  
DateTime.Now.Date   
dateVariable.Date  

A Kind propriedade e os dateStart dateEnd parâmetros também devem ser DateTimeKind.Unspecified.

O valor do daylightDelta parâmetro pode variar de -14 a 14. A soma do daylightDelta parâmetro e o baseUtcOffset parâmetro usado na chamada para o TimeZoneInfo.CreateCustomTimeZone método também devem variar de -14 a 14 ou um InvalidTimeZoneException é gerado.

Observação

O daylightDelta parâmetro define a diferença entre o horário padrão de um fuso horário e o horário de verão. Não se destina a definir o deslocamento de tempo padrão do fuso horário do UTC (Tempo Universal Coordenado). A TimeZoneInfo classe pressupõe que esse deslocamento de UTC seja constante durante toda a vida útil do fuso horário. Para refletir uma alteração no deslocamento de um fuso horário de UTC que não é causada pela aplicação de uma regra de ajuste, você deve usar o CreateCustomTimeZone método para criar um novo fuso horário personalizado.

Aplica-se a

CreateAdjustmentRule(DateTime, DateTime, TimeSpan, TimeZoneInfo+TransitionTime, TimeZoneInfo+TransitionTime, TimeSpan)

Cria uma nova regra de ajuste para um determinado fuso horário.

public:
 static TimeZoneInfo::AdjustmentRule ^ CreateAdjustmentRule(DateTime dateStart, DateTime dateEnd, TimeSpan daylightDelta, TimeZoneInfo::TransitionTime daylightTransitionStart, TimeZoneInfo::TransitionTime daylightTransitionEnd, TimeSpan baseUtcOffsetDelta);
public static TimeZoneInfo.AdjustmentRule CreateAdjustmentRule (DateTime dateStart, DateTime dateEnd, TimeSpan daylightDelta, TimeZoneInfo.TransitionTime daylightTransitionStart, TimeZoneInfo.TransitionTime daylightTransitionEnd, TimeSpan baseUtcOffsetDelta);
static member CreateAdjustmentRule : DateTime * DateTime * TimeSpan * TimeZoneInfo.TransitionTime * TimeZoneInfo.TransitionTime * TimeSpan -> TimeZoneInfo.AdjustmentRule
Public Shared Function CreateAdjustmentRule (dateStart As DateTime, dateEnd As DateTime, daylightDelta As TimeSpan, daylightTransitionStart As TimeZoneInfo.TransitionTime, daylightTransitionEnd As TimeZoneInfo.TransitionTime, baseUtcOffsetDelta As TimeSpan) As TimeZoneInfo.AdjustmentRule

Parâmetros

dateStart
DateTime

A data efetiva da regra de ajuste. Se o valor for DateTime.MinValue.Date, essa será a primeira regra de ajuste em vigor para um fuso horário.

dateEnd
DateTime

A última data em que a regra de ajuste estava em vigor. Se o valor for DateTime.MaxValue.Date, a regra de ajuste não terá data de término.

daylightDelta
TimeSpan

A alteração de tempo que resulta do ajuste. Esse valor é adicionado ao fuso horário BaseUtcOffset e BaseUtcOffsetDelta às propriedades para obter o deslocamento correto do horário de verão do UTC (Tempo Universal Coordenado). Este valor pode variar de -14 a 14.

daylightTransitionStart
TimeZoneInfo.TransitionTime

O início do horário de verão.

daylightTransitionEnd
TimeZoneInfo.TransitionTime

O fim do horário de verão.

baseUtcOffsetDelta
TimeSpan

A diferença de tempo com o deslocamento utc base para o fuso horário durante o período de regra de ajuste.

Retornos

TimeZoneInfo.AdjustmentRule

A nova regra de ajuste.

Aplica-se a