Aracılığıyla paylaş


DateTimeFormatInfo.Calendar Özellik

Tanım

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

public:
 property System::Globalization::Calendar ^ Calendar { System::Globalization::Calendar ^ get(); void set(System::Globalization::Calendar ^ value); };
public System.Globalization.Calendar Calendar { get; set; }
member this.Calendar : System.Globalization.Calendar with get, set
Public Property Calendar As Calendar

Ö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.

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
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim ci As CultureInfo = 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))
   End Sub
End Module

Public Class CalendarUtilities
   Private newCal As Calendar
   Private isGregorian As Boolean
   
   Public Shared Sub ChangeCalendar(ci As CultureInfo, cal As Calendar)
      Dim util As New CalendarUtilities(cal)
      
      ' Is the new calendar already the current calendar?
      If util.CalendarExists(ci.DateTimeFormat.Calendar) Then
         Exit Sub
      End If

      ' Is the new calendar supported?
      If Array.Exists(ci.OptionalCalendars, AddressOf util.CalendarExists) Then
         ci.DateTimeFormat.Calendar = cal
      End If
   End Sub
   
   Private Sub New(cal As Calendar)
      newCal = cal
      
      ' Is the new calendar a Gregorian calendar?
      isGregorian = cal.GetType().Name.Contains("Gregorian")
   End Sub
   
   Private Function CalendarExists(cal As Calendar) As Boolean
      If cal.ToString() = newCal.ToString Then
         If isGregorian Then
            If CType(cal, GregorianCalendar).CalendarType = 
               CType(newCal, GregorianCalendar).CalendarType Then
               Return True
            End If
         Else
            Return True
         End If
      End If
      Return False
   End Function

   Public Shared Function ShowCalendarName(cal As Calendar) As String
      Dim calName As String = cal.ToString().Replace("System.Globalization.", "")
      If TypeOf cal Is GregorianCalendar Then
         calName += ", Type " + CType(cal, GregorianCalendar).CalendarType.ToString()
      End If
      Return calName 
   End Function
End Class
' 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. LocalizedGregorianCalendarkullanıldığında, varsayılan uzun tarih belirtici "yyyy'\x5e74'M'\x6708'd'\x65e5'" olur.

Şunlara uygulanır

Ayrıca bkz.