TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule Método

Definição

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 de entrada em vigor da regra de ajuste. Se o valor do dateStart parâmetro for DateTime.MinValue.Date, esta é a primeira regra de ajuste em vigor para um fuso horário.

dateEnd
DateTime

A última data em que a regra de ajuste entra em vigor. Se o valor do dateEnd parâmetro for DateTime.MaxValue.Date, a regra de ajuste não tem data de fim.

daylightDelta
TimeSpan

A variação de tempo que resulta do ajuste. Este valor é adicionado à propriedade do BaseUtcOffset fuso horário para obter o deslocamento correto da luz do dia em relação ao Tempo Universal Coordenado (UTC). 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 fim do horário de verão.

Devoluções

Um objeto que representa a nova regra de ajuste.

Exceções

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

-ou-

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

-ou-

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

dateEnd é anterior a dateStart.

-ou-

daylightDelta é inferior a -14 ou superior a 14.

-ou-

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

-ou-

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

Exemplos

O exemplo seguinte 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 seguintes. Estas regras são adicionadas a um objeto genérico List<T> cujos elementos são depois copiados para um TimeZoneInfo.AdjustmentRule array. Este array é então usado na chamada ao 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())

Observações

Pode usar este método para criar uma ou mais regras de ajuste para um fuso horário personalizado. Um array dos TimeZoneInfo.AdjustmentRule objetos devolvidos por chamadas a este método pode então ser passado como adjustmentRules parâmetro para duas sobrecargas do CreateCustomTimeZone método. O exemplo ilustra este procedimento.

Note

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

Os dateStart parâmetros e dateEnd devem ser valores de data sem um componente temporal ou um ArgumentException é lançado. O componente temporal pode ser removido ao recuperar um DateTime valor da propriedade data e hora Date , conforme mostrado nas seguintes declarações:

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

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

O valor do daylightDelta parâmetro pode variar de -14 a 14. A soma do daylightDelta parâmetro e do baseUtcOffset parâmetro usado na chamada ao TimeZoneInfo.CreateCustomTimeZone método também deve variar de -14 a 14, ou então é lançado um InvalidTimeZoneException .

Note

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

Aplica-se a