Freigeben über


DateTimeFormatInfo.Calendar Eigenschaft

Definition

Ruft den Kalender ab, der für die aktuelle Kultur verwendet werden soll, oder legt diesen fest.

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

Eigenschaftswert

Der Kalender, der für die aktuelle Kultur verwendet werden soll. Der Standardwert ist InvariantInfo ein GregorianCalendar Objekt.

Ausnahmen

Die Eigenschaft wird auf null.

Die Eigenschaft wird auf ein Calendar Objekt festgelegt, das für die aktuelle Kultur ungültig ist.

Die Eigenschaft wird festgelegt, und das DateTimeFormatInfo Objekt ist schreibgeschützt.

Beispiele

Im folgenden Beispiel wird eine ChangeCalendar Methode definiert, die den aktuellen Kalender einer Kultur in einen angegebenen Kalender ändert, es sei denn, sie ist bereits der aktuelle Kalender oder wird von der Kultur nicht unterstützt. Der Code, der die Methode aufruft, instanziiert ein CultureInfo Objekt, das die Arabische Kultur (Ägypten) darstellt, und versucht zunächst, seinen Kalender in den japanischen Kalender zu ändern. Da der japanische Kalender nicht unterstützt wird, ändert die Methode den Kalender der Kultur nicht. Da der Umm al-Qura-Kalender jedoch ein Mitglied der CultureInfo.OptionalCalendars Sammlung ist, kann die Methode es zum aktuellen Kalender für die ar-EG Kultur machen.

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

Hinweise

Die Calendar Eigenschaft akzeptiert nur Kalender, die für die Kultur gültig sind, die dem DateTimeFormatInfo Objekt zugeordnet ist. Die CultureInfo.OptionalCalendars Eigenschaft gibt die Kalender an, die von einer bestimmten Kultur verwendet werden können, und die CultureInfo.Calendar Eigenschaft gibt den Standardkalender für die Kultur an.

Von Bedeutung

Ären in den japanischen Kalendern basieren auf der Herrschaft des Kaisers und werden daher voraussichtlich wechseln. Beispielsweise markierte der 1. Mai 2019 den Anfang der Reiwa-Ära in der JapaneseCalendar und JapaneseLunisolarCalendar. Eine solche Änderung des Zeitalters wirkt sich auf alle Anwendungen aus, die diese Kalender verwenden. Unter Handling a new era in the Japanese calendar in .NET (Umgang mit einem neuen Zeitabschnitt im japanischen Kalender in .NET) finden Sie weitere Informationen und wie Sie bestimmen können, ob Ihre Anwendungen ebenfalls betroffen sind. Informationen zum Testen Ihrer Anwendungen auf Windows-Systemen, um ihre Bereitschaft für die Änderung der Ära sicherzustellen, finden Sie unter "Vorbereiten Ihrer Anwendung für die Änderung im japanischen Zeitalter". Features in .NET, die Kalender mit mehreren Epochen unterstützen und bewährte Methoden beim Arbeiten mit Kalendern, die mehrere Epochen unterstützen, finden Sie unter Arbeiten mit Eras.

Das Ändern des Werts dieser Eigenschaft wirkt sich auch auf die folgenden Eigenschaften aus: MonthNames, , AbbreviatedMonthNames, DayNames, AbbreviatedDayNames, CalendarWeekRule, FirstDayOfWeek, ShortDatePatternYearMonthPatternFullDateTimePatternLongDatePatternund .MonthDayPattern

Wenn die Kultur des aktuellen Threads beispielsweise japanisch ist, akzeptiert JapaneseCalendardiese Eigenschaft , , oder LocalizedGregorianCalendarUSEnglishGregorianCalendar. Wenn dies JapaneseCalendar verwendet wird, lautet der Standardmäßige lange Datumsbezeichner "gg y'\x5e74'M'\x6708'd'\x65e5'". Wenn der LocalizedGregorianCalendar, verwendet wird, lautet der Standardmäßige lange Datumsbezeichner "yyyy'\x5e74'M'\x6708'd'\x65e5'".

Gilt für:

Weitere Informationen