DateTimeFormatInfo.Calendar 속성

정의

현재 문화권에 사용할 달력을 가져오거나 설정합니다.Gets or sets the calendar to use for the current culture.

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

속성 값

현재 문화권에 사용할 달력입니다.The calendar to use for the current culture. InvariantInfo의 기본값은 GregorianCalendar 개체입니다.The default for InvariantInfo is a GregorianCalendar object.

예외

속성이 null로 설정되어 있습니다.The property is being set to null.

속성이 현재 문화권에 유효하지 않은 Calendar 개체로 설정되는 경우The property is being set to a Calendar object that is not valid for the current culture.

속성이 설정되어 있으며 DateTimeFormatInfo 개체가 읽기 전용입니다.The property is being set and the DateTimeFormatInfo object is read-only.

예제

다음 예제에서는 현재 달력이 이미 아니거나 문화권에서 지원 되지 않는 경우 문화권의 현재 달력을 지정 된 달력으로 변경 하는 ChangeCalendar 메서드를 정의 합니다.The following example defines a ChangeCalendar method that changes a culture's current calendar to a specified calendar unless it is already the current calendar or if it is not supported by the culture. 메서드를 호출 하는 코드는 아랍어 (이집트) 문화권을 나타내는 CultureInfo 개체를 인스턴스화하고 먼저 달력을 일본어 달력으로 변경 하려고 시도 합니다.The code that calls the method instantiates a CultureInfo object that represents the Arabic (Egypt) culture and first attempts to change its calendar to the Japanese calendar. 일본식 달력 지원 되지 않으므로 문화권의 달력을 변경 하지을 수행 합니다.Because the Japanese calendar is not supported, the method makes not change the culture's calendar. 그러나 um al 말 쿠라 달력은 CultureInfo.OptionalCalendars 컬렉션의 멤버 이기 때문에이 메서드는 ar 예 문화권에 대 한 현재 달력으로 만듭니다.However, because the Umm al-Qura calendar is a member of the CultureInfo.OptionalCalendars collection, the method does succeed in making it the current calendar for the ar-EG culture.

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

설명

Calendar 속성은 DateTimeFormatInfo 개체와 연결 된 문화권에 유효한 달력만 허용 합니다.The Calendar property accepts only calendars that are valid for the culture that is associated with the DateTimeFormatInfo object. CultureInfo.OptionalCalendars 속성은 특정 문화권에서 사용할 수 있는 달력을 지정 하 고 CultureInfo.Calendar 속성은 문화권의 기본 달력을 지정 합니다.The CultureInfo.OptionalCalendars property specifies the calendars that can be used by a particular culture, and the CultureInfo.Calendar property specifies the default calendar for the culture.

중요

일본어 달력의 시대는 천황 통치 기간을 기준으로 하므로 변경되어야 합니다.Eras in the Japanese calendars are based on the emperor's reign and are therefore expected to change. 예를 들어 2019년 5월 1일은 JapaneseCalendarJapaneseLunisolarCalendar에서 레이와 시대의 시작을 나타냅니다.For example, May 1, 2019 marked the beginning of the Reiwa era in the JapaneseCalendar and JapaneseLunisolarCalendar. 이러한 시대 변경 내용은 해당 달력을 사용하는 모든 애플리케이션에 영향을 줍니다.Such a change of era affects all applications that use these calendars. 자세한 내용 및 현재 애플리케이션이 영향을 받는지 확인하는 방법은 .NET에서 일본식 달력의 새로운 세대 처리를 참조하세요.See Handling a new era in the Japanese calendar in .NET for more information and to determine whether your applications are affected. Windows 시스템에서 애플리케이션을 테스트하여 세대 변화에 대한 준비 상태를 확인하는 방법은 일본어 세대 변경을 위한 애플리케이션 준비를 참조하세요.See Prepare your application for the Japanese era change for information on testing your applications on Windows systems to ensure their readiness for the era change. 여러 시대가 포함된 달력을 지원하는 .NET의 기능과 여러 시대를 지원하는 달력을 사용할 때 모범 사례에 대해서는 시대 작업을 참조하세요.See Working with eras for features in .NET that support calendars with multiple eras and for best practices when working with calendars that support multiple eras.

이 속성의 값을 변경 하면 다음 속성에도 영향을 줍니다. MonthNames, AbbreviatedMonthNames, DayNames, AbbreviatedDayNames, CalendarWeekRule, FirstDayOfWeek, FullDateTimePattern, LongDatePattern, ShortDatePatternYearMonthPatternMonthDayPatternChanging the value of this property affects the following properties as well: MonthNames, AbbreviatedMonthNames, DayNames, AbbreviatedDayNames, CalendarWeekRule, FirstDayOfWeek, FullDateTimePattern, LongDatePattern, ShortDatePattern, YearMonthPattern, and MonthDayPattern.

예를 들어 현재 스레드의 문화권이 일본어 인 경우이 속성은 JapaneseCalendar, LocalizedGregorianCalendar또는 USEnglishGregorianCalendar를 허용 합니다.For example, if the culture of the current thread is Japanese, this property accepts JapaneseCalendar, LocalizedGregorianCalendar, or USEnglishGregorianCalendar. JapaneseCalendar 사용 하는 경우 기본 긴 날짜 지정자는 "gg y ' \x5e74 ' \x6708 ' \x65e5 '"입니다.When the JapaneseCalendar is used, the default long date specifier is "gg y'\x5e74'M'\x6708'd'\x65e5'". LocalizedGregorianCalendar를 사용 하는 경우 기본 긴 날짜 지정자는 "yyyy ' \x5e74 ' \x6708 ' \x65e5 '"입니다.When the LocalizedGregorianCalendar, is used, the default long date specifier is "yyyy'\x5e74'M'\x6708'd'\x65e5'".

적용 대상

추가 정보