TimeZoneInfo.AdjustmentRule.DateStart Propiedad

Definición

Obtiene la fecha de entrada en vigor de la regla de ajuste.

C#
public DateTime DateStart { get; }

Valor de propiedad

DateTime

Valor DateTime que indica si la regla de ajuste surte efecto.

Ejemplos

En el ejemplo siguiente se muestra información sobre todas las zonas horarias definidas en el registro del sistema del equipo local, incluidas las fechas de inicio y finalización de sus reglas de ajuste.

C#
using System;
using System.Collections.ObjectModel;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones();
      DateTimeFormatInfo dateInfo = CultureInfo.CurrentCulture.DateTimeFormat;
      
      foreach (var zone in timeZones)
      {
         Console.WriteLine("{0} transition time information:", zone.StandardName);
         Console.WriteLine("   Time zone information: ");
         Console.WriteLine("      Base UTC Offset: {0}", zone.BaseUtcOffset);
         Console.WriteLine("      Supports DST: {0}", zone.SupportsDaylightSavingTime);

         TimeZoneInfo.AdjustmentRule[] adjustmentRules= zone.GetAdjustmentRules();
         
         // Indicate that time zone has no adjustment rules
         if (adjustmentRules.Length == 0) {
            Console.WriteLine("      No adjustment rules defined.");
         }   
         else {
            Console.WriteLine("      Adjustment Rules: {0}", adjustmentRules.Length);
            // Iterate adjustment rules       
            foreach (var adjustmentRule in adjustmentRules) {
               Console.WriteLine("   Adjustment rule from {0:d} to {1:d}:", 
                                 adjustmentRule.DateStart, 
                                 adjustmentRule.DateEnd);                                 
               Console.WriteLine("      Delta: {0}", adjustmentRule.DaylightDelta);
               // Get start of transition
               TimeZoneInfo.TransitionTime daylightStart = adjustmentRule.DaylightTransitionStart;
               // Display information on floating date rule
               if (! daylightStart.IsFixedDateRule)
                  Console.WriteLine("      Begins at {0:t} on the {1} {2} of {3}", 
                                 daylightStart.TimeOfDay, 
                                 (WeekOfMonth) daylightStart.Week,  
                                 daylightStart.DayOfWeek, 
                                 dateInfo.GetMonthName(daylightStart.Month));
               // Display information on fixed date rule 
               else
                  Console.WriteLine("      Begins at {0:t} on {1} {2}", 
                                    daylightStart.TimeOfDay, 
                                    dateInfo.GetMonthName(daylightStart.Month), 
                                    daylightStart.Day);
               
               // Get end of transition.
              TimeZoneInfo.TransitionTime daylightEnd = adjustmentRule.DaylightTransitionEnd;
               // Display information on floating date rule.
               if (!daylightEnd.IsFixedDateRule) 
                  Console.WriteLine("      Ends at {0:t} on the {1} {2} of {3}", 
                                 daylightEnd.TimeOfDay, 
                                 (WeekOfMonth) daylightEnd.Week,  
                                 daylightEnd.DayOfWeek, 
                                 dateInfo.GetMonthName(daylightEnd.Month));
               // Display information on fixed date rule.
               else
                  Console.WriteLine("      Ends at {0:t} on {1} {2}", 
                                    daylightEnd.TimeOfDay, 
                                    dateInfo.GetMonthName(daylightEnd.Month), 
                                    daylightEnd.Day);
            }
         }   
      }   
   }

   private enum WeekOfMonth 
   {
      First = 1,
      Second = 2,
      Third = 3,
      Fourth = 4,
      Last = 5,
   }
}
// A portion of the output from the example might appear as follows:
//       Tonga Standard Time transition time information:
//          Time zone information:
//             Base UTC Offset: 13:00:00
//             Supports DST: False
//             No adjustment rules defined.
//       Samoa Standard Time transition time information:
//          Time zone information:
//             Base UTC Offset: 13:00:00
//             Supports DST: True
//             Adjustment Rules: 4
//          Adjustment rule from 1/1/0001 to 12/31/2009:
//             Delta: 00:00:00
//             Begins at 12:00 AM on January 1
//             Ends at 12:00 AM on January 1
//          Adjustment rule from 1/1/2010 to 12/31/2010:
//             Delta: 01:00:00
//             Begins at 11:59 PM on the Last Saturday of September
//             Ends at 12:00 AM on the First Friday of January
//          Adjustment rule from 1/1/2011 to 12/31/2011:
//             Delta: 01:00:00
//             Begins at 3:00 AM on the Fourth Saturday of September
//             Ends at 4:00 AM on the First Saturday of April
//          Adjustment rule from 1/1/2012 to 12/31/9999:
//             Delta: 01:00:00
//             Begins at 12:00 AM on the Last Sunday of September
//             Ends at 1:00 AM on the First Sunday of April
//       Line Islands Standard Time transition time information:
//          Time zone information:
//             Base UTC Offset: 14:00:00
//             Supports DST: False
//             No adjustment rules defined.

Comentarios

El valor de la DateStart propiedad es un valor de fecha sin un componente de hora. Define la fecha en la que entra en vigor una regla de ajuste determinada. Esta es la fecha en la que entra en vigor un conjunto de transiciones (que normalmente se definen mediante una transición al horario de verano y una transición a la hora estándar). Por ejemplo, una regla de ajuste podría entrar en vigor el 1 de enero de 2017, lo que proporciona una transición al horario de verano el segundo domingo de marzo y para una transición a la hora estándar el primer domingo de noviembre. Tenga en cuenta que la fecha de inicio de la regla de ajuste no está vinculada a la fecha de la primera transición.

Puede asignar DateTime.MinValue.Date a la DateEnd propiedad al crear una regla de ajuste personalizada para usarla en una aplicación que tenga en cuenta la zona horaria que no tenga que trabajar con información de zona horaria histórica.

Importante

A menos que haya un motivo atractivo para hacerlo, debe definir la fecha de inicio de la regla de ajuste para que se produzca dentro del intervalo de tiempo durante el que la zona horaria observe la hora estándar. A menos que haya una razón convincente para hacerlo, no debe definir la fecha de inicio de la regla de ajuste para que se produzca dentro del intervalo de tiempo durante el cual la zona horaria observe el horario de verano. Por ejemplo, si la transición de una zona horaria del horario de verano se produce el tercer domingo de marzo y su transición al horario de verano se produce el primer domingo de octubre, la fecha de inicio efectiva de la regla de ajuste no debe ser el 1 de enero de un año determinado, ya que esa fecha se produce dentro del período de horario de verano.

De forma predeterminada, el registro de Windows XP define una única regla de ajuste cuya fecha de inicio es el lunes, 01 de enero de 0001 (el valor de DateTime.MinValue.Date), para cada zona horaria. En el caso de las zonas horarias de la Estados Unidos, el registro de Windows Vista define dos reglas de ajuste:

  • Lunes, 1 de enero de 0001, a domingo, 31 de diciembre de 2006.

  • Lunes, 1 de enero de 2007, al viernes 31 de diciembre de 9999.

Esto significa que, aunque las reglas de ajuste de zona horaria almacenadas en el registro son útiles para realizar operaciones actuales relacionadas con la zona horaria, no se pueden usar de forma confiable para recuperar información de zona horaria histórica. Para obtener información sobre cómo definir una zona horaria personalizada con varias reglas de ajuste que se pueden usar en una aplicación histórica con reconocimiento de zona horaria, consulte How to: Create Time Zones with Adjustment Rules.

Se aplica a

Producto Versiones
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1