DateTimeFormatInfo.Calendar Propiedad

Definición

Obtiene o establece el calendario que se utilizará para la referencia cultural actual.

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

Valor de propiedad

Calendario que se usará para la referencia cultural actual. El valor predeterminado de InvariantInfo es un objeto GregorianCalendar.

Excepciones

La propiedad se establece en null.

Esta propiedad se establece en un objeto Calendar que no es válido para la referencia cultural actual.

La propiedad se está estableciendo y el objeto DateTimeFormatInfo es de solo lectura.

Ejemplos

En el ejemplo siguiente se define un ChangeCalendar método que cambia el calendario actual de una referencia cultural a un calendario especificado, a menos que ya sea el calendario actual o si no es compatible con la referencia cultural. El código que llama al método crea una instancia de un CultureInfo objeto que representa la referencia cultural árabe (Egipto) y primero intenta cambiar su calendario al calendario japonés. Dado que no se admite el calendario japonés, el método no cambia el calendario de la referencia cultural. Sin embargo, dado que el calendario um al-Qura es miembro de la CultureInfo.OptionalCalendars colección, el método tiene éxito para convertirlo en el calendario actual para la referencia cultural ar-EG.

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

Comentarios

La Calendar propiedad solo acepta calendarios que son válidos para la referencia cultural asociada al DateTimeFormatInfo objeto . La CultureInfo.OptionalCalendars propiedad especifica los calendarios que puede usar una referencia cultural determinada y la CultureInfo.Calendar propiedad especifica el calendario predeterminado para la referencia cultural.

Importante

Las eras en los calendarios japoneses se basan en el reino del emperador y, por tanto, se espera que cambien. Por ejemplo, el 1 de mayo de 2019 marcaba el comienzo de la era Reiwa en JapaneseCalendar y JapaneseLunisolarCalendar. Este cambio de era afecta a todas las aplicaciones que usan estos calendarios. Para obtener más información y determinar si las aplicaciones se ven afectadas, consulte Control de una nueva era en el calendario japonés en .NET. Para obtener información sobre cómo probar las aplicaciones en sistemas Windows para garantizar su preparación para el cambio de era, consulte Preparación de la aplicación para el cambio en la era japonesa. Para ver las características de .NET que admiten calendarios con varias eras y para conocer los procedimientos recomendados al trabajar con calendarios que admiten varias eras, consulte Trabajar con eras.

Cambiar el valor de esta propiedad también afecta a las siguientes propiedades: MonthNames, AbbreviatedMonthNames, DayNames, AbbreviatedDayNames, CalendarWeekRule, FirstDayOfWeekFullDateTimePatternShortDatePatternLongDatePattern, , YearMonthPatterny .MonthDayPattern

Por ejemplo, si la referencia cultural del subproceso actual es japonesa, esta propiedad acepta JapaneseCalendar, LocalizedGregorianCalendaro USEnglishGregorianCalendar. JapaneseCalendar Cuando se usa , el especificador de fecha larga predeterminado es "gg y'\x5e74'M'\x6708'd'\x65e5'". LocalizedGregorianCalendarCuando se usa , el especificador de fecha larga predeterminado es "aaaa"\x5e74'M'\x6708'd'\x65e5'".

Se aplica a

Producto Versiones
.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

Consulte también