DateTimeFormatInfo.Calendar Özellik

Tanım

Geçerli kültür için kullanılacak takvimi alır veya ayarlar.

C#
public System.Globalization.Calendar Calendar { get; set; }

Özellik Değeri

Geçerli kültür için kullanılacak takvim. için InvariantInfo varsayılan değer bir GregorianCalendar nesnedir.

Özel durumlar

özelliği olarak nullayarlanıyor.

özelliği geçerli kültür için geçerli olmayan bir Calendar nesneye ayarlanıyor.

özelliği ayarlanıyor ve DateTimeFormatInfo nesne salt okunur.

Örnekler

Aşağıdaki örnek, bir kültürün geçerli takvimini zaten geçerli takvim olmadığı veya kültür tarafından desteklenmediği sürece belirtilen takvime değiştiren bir yöntemi tanımlar ChangeCalendar . yöntemini çağıran kod, Arapça (Mısır) kültürünü temsil eden bir CultureInfo nesnenin örneğini oluşturur ve önce takvimini Japon takvimine değiştirmeye çalışır. Japon takvimi desteklenmediğinden, yöntemi kültürün takvimini değiştirmez. Ancak umm al-Qura takvimi koleksiyonun CultureInfo.OptionalCalendars bir üyesi olduğundan, yöntemi bunu ar-EG kültürü için geçerli takvim yapmada başarılı olur.

C#
using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      CultureInfo ci = CultureInfo.CreateSpecificCulture("ar-EG");
      Console.WriteLine("The current calendar for the {0} culture is {1}",
                        ci.Name,
                        CalendarUtilities.ShowCalendarName(ci.DateTimeFormat.Calendar));

      CalendarUtilities.ChangeCalendar(ci, new JapaneseCalendar());
      Console.WriteLine("The current calendar for the {0} culture is {1}",
                        ci.Name,
                        CalendarUtilities.ShowCalendarName(ci.DateTimeFormat.Calendar));

      CalendarUtilities.ChangeCalendar(ci, new UmAlQuraCalendar());
      Console.WriteLine("The current calendar for the {0} culture is {1}",
                        ci.Name,
                        CalendarUtilities.ShowCalendarName(ci.DateTimeFormat.Calendar));
   }
}

public class CalendarUtilities
{
   private Calendar newCal;
   private bool isGregorian;

   public static void ChangeCalendar(CultureInfo ci, Calendar cal)
   {
      CalendarUtilities util = new CalendarUtilities(cal);

      // Is the new calendar already the current calendar?
      if (util.CalendarExists(ci.DateTimeFormat.Calendar))
         return;

      // Is the new calendar supported?
      if (Array.Exists(ci.OptionalCalendars, util.CalendarExists))
         ci.DateTimeFormat.Calendar = cal;
   }

   private CalendarUtilities(Calendar cal)
   {
      newCal = cal;

      // Is the new calendar a Gregorian calendar?
      isGregorian = cal.GetType().Name.Contains("Gregorian");
   }

   private bool CalendarExists(Calendar cal)
   {
      if (cal.ToString() == newCal.ToString()) {
         if (isGregorian) {
            if (((GregorianCalendar) cal).CalendarType ==
               ((GregorianCalendar) newCal).CalendarType)
               return true;
         }
         else {
            return true;
         }
      }
      return false;
   }

   public static string ShowCalendarName(Calendar cal)
   {
      string calName = cal.ToString().Replace("System.Globalization.", "");
      if (cal is GregorianCalendar)
         calName += ", Type " + ((GregorianCalendar) cal).CalendarType.ToString();

      return calName;
   }
}
// The example displays the following output:
//    The current calendar for the ar-EG culture is GregorianCalendar, Type Localized
//    The current calendar for the ar-EG culture is GregorianCalendar, Type Localized
//    The current calendar for the ar-EG culture is UmAlQuraCalendar

Açıklamalar

Calendar özelliği yalnızca nesnesiyle DateTimeFormatInfo ilişkili kültür için geçerli olan takvimleri kabul eder. CultureInfo.OptionalCalendars özelliği belirli bir kültür tarafından kullanılabilecek takvimleri belirtir ve CultureInfo.Calendar özelliği de kültür için varsayılan takvimi belirtir.

Önemli

Japon takvimlerindeki dönemler imparatorun saltanatına dayanır ve bu nedenle değişmesi beklenir. Örneğin, 1 Mayıs 2019 ve JapaneseLunisolarCalendariçinde Reiwa döneminin başlangıcını işaretlediJapaneseCalendar. Bu tür bir çağ değişikliği, bu takvimleri kullanan tüm uygulamaları etkiler. Daha fazla bilgi edinmek ve uygulamalarınızın etkilenip etkilenmediğini belirlemek için bkz. .NET'te Japon takviminde yeni bir dönemi işleme. Uygulamalarınızı Windows sistemlerinde test ederek çağ değişikliğine hazır olmalarını sağlama hakkında bilgi için bkz. Uygulamanızı Japon dönemi değişikliğine hazırlama. .NET'te birden çok dönemi destekleyen takvimleri destekleyen özellikler ve birden çok dönemi destekleyen takvimlerle çalışırken en iyi yöntemler için bkz. Dönemlerle çalışma.

Bu özelliğin değerini değiştirmek şu özellikleri de etkiler: , , , , , CalendarWeekRule, FirstDayOfWeek, , FullDateTimePattern, LongDatePattern, ShortDatePattern, YearMonthPatternve MonthDayPattern. AbbreviatedDayNamesDayNamesAbbreviatedMonthNamesMonthNames

Örneğin, geçerli iş parçacığının kültürü Japonca ise, bu özellik , LocalizedGregorianCalendarveya USEnglishGregorianCalendarkabul ederJapaneseCalendar. JapaneseCalendar kullanıldığında, varsayılan uzun tarih belirtici "gg y'\x5e74'M'\x6708'd'\x65e5'" olur. Localized GregorianCalendarkullanıldığında, varsayılan uzun tarih belirtici "yyyy'\x5e74'M'\x6708'd'\x65e5'" olur.

Şunlara uygulanır

Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 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 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Ayrıca bkz.