TimeZoneInfo.GetAdjustmentRules Yöntem

Tanım

Geçerli TimeZoneInfo nesneye TimeZoneInfo.AdjustmentRule uygulanan bir nesne dizisi alır.

C#
public TimeZoneInfo.AdjustmentRule[] GetAdjustmentRules();

Döndürülenler

Bu saat dilimi için bir nesne dizisi.

Özel durumlar

Sistem, ayarlama kurallarının bellek içi kopyasını oluşturmak için yeterli belleğe sahip değil.

Örnekler

Aşağıdaki örnek, yerel sistemde tanımlanan tüm saat dilimlerini alır ve ayarlama kuralları hakkındaki tüm bilgileri konsolda görüntüler.

C#
private enum WeekOfMonth 
{
   First = 1,
   Second = 2,
   Third = 3,
   Fourth = 4,
   Last = 5,
}

private static void ShowStartAndEndDates()
{
   // Get all time zones from system
   ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones();
   string[] monthNames = CultureInfo.CurrentCulture.DateTimeFormat.MonthNames;
   // Get each time zone
   foreach (TimeZoneInfo timeZone in timeZones)
   {
      TimeZoneInfo.AdjustmentRule[] adjustments = timeZone.GetAdjustmentRules();
      // Display message for time zones with no adjustments
      if (adjustments.Length == 0)
      {
         Console.WriteLine("{0} has no adjustment rules", timeZone.StandardName);
      }   
      else
      {
         // Handle time zones with 1 or 2+ adjustments differently
         bool showCount = false;
         int ctr = 0;
         string spacer = "";
         
         Console.WriteLine("{0} Adjustment rules", timeZone.StandardName);
         if (adjustments.Length > 1)
         {
            showCount = true;
            spacer = "   ";
         }   
         // Iterate adjustment rules
         foreach (TimeZoneInfo.AdjustmentRule adjustment in adjustments)
         {
            if (showCount)
            { 
               Console.WriteLine("   Adjustment rule #{0}", ctr+1);
               ctr++;
            }
            // Display general adjustment information
            Console.WriteLine("{0}   Start Date: {1:D}", spacer, adjustment.DateStart);
            Console.WriteLine("{0}   End Date: {1:D}", spacer, adjustment.DateEnd);
            Console.WriteLine("{0}   Time Change: {1}:{2:00} hours", spacer, 
                              adjustment.DaylightDelta.Hours, adjustment.DaylightDelta.Minutes);
            // Get transition start information
            TimeZoneInfo.TransitionTime transitionStart = adjustment.DaylightTransitionStart;
            Console.Write("{0}   Annual Start: ", spacer);
            if (transitionStart.IsFixedDateRule)
            {
               Console.WriteLine("On {0} {1} at {2:t}", 
                                 monthNames[transitionStart.Month - 1], 
                                 transitionStart.Day, 
                                 transitionStart.TimeOfDay);
            }
            else
            {
               Console.WriteLine("The {0} {1} of {2} at {3:t}", 
                                 ((WeekOfMonth)transitionStart.Week).ToString(), 
                                 transitionStart.DayOfWeek.ToString(), 
                                 monthNames[transitionStart.Month - 1], 
                                 transitionStart.TimeOfDay);
            }
            // Get transition end information
            TimeZoneInfo.TransitionTime transitionEnd = adjustment.DaylightTransitionEnd;
            Console.Write("{0}   Annual End: ", spacer);
            if (transitionEnd.IsFixedDateRule)
            {
               Console.WriteLine("On {0} {1} at {2:t}", 
                                 monthNames[transitionEnd.Month - 1], 
                                 transitionEnd.Day, 
                                 transitionEnd.TimeOfDay);
            }
            else
            {
               Console.WriteLine("The {0} {1} of {2} at {3:t}", 
                                 ((WeekOfMonth)transitionEnd.Week).ToString(), 
                                 transitionEnd.DayOfWeek.ToString(), 
                                 monthNames[transitionEnd.Month - 1], 
                                 transitionEnd.TimeOfDay);
            }
         }
      }   
      Console.WriteLine();
   } 
}

Açıklamalar

GetAdjustmentRules yöntemi bir nesne dizisi System.TimeZoneInfo.AdjustmentRule alır. Dizideki her nesne, bu saat dilimi ayarlamasının etkin başlangıç ve bitiş tarihini, ayrıca deltasını (ayarlamanın değişmesine neden olan tam tutar) tanımlar. Buna ek olarak, iki özellik her yıllık geçişin standart saate ne zaman ve ne zaman gerçekleştiğini tanımlayan nesneler döndürür System.TimeZoneInfo.TransitionTime .

Bir saat diliminde birden çok ayarlama kuralı varsa, bunlar genellikle en erkenden (dizin 0'da) en geçe (dizin Length - 1) sıralanır.

Bir saat diliminde ayarlama kuralı yoksa, GetAdjustmentRules yöntemi boş bir dizi (sıfır olan Length bir dizi) döndürür.

yöntemi tarafından GetAdjustmentRules döndürülen dizi öğelerinde yapılan değişiklikler, belirli bir saat dilimine ait ayarlama kurallarına yansıtılmaz. Bir saat diliminin ayarlama kurallarını değiştirmek için (örneğin, gün ışığından yararlanma saatine geçmiş geçişini yansıtmak için) var olan saat dilimini değiştirmek yerine uygun ayarlama kurallarına sahip yeni bir saat dilimi oluşturmanız gerekir.

Şunlara uygulanır

Ürün Sürümler
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.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, 4.8.1
.NET Standard 2.0, 2.1

Ayrıca bkz.