다음을 통해 공유


TwoDigitYearMax 기본값은 2049입니다.

GregorianCalendar와 같은 달력 클래스에는 두 자리 연도로 표시할 수 있는 100년 범위의 마지막 연도를 정의하는 TwoDigitYearMax 속성이 있습니다. 이 속성은 두 자리 연도를 네 자리 연도로 변환하는 데 자주 사용됩니다. 이전에는 GregorianCalendar 및 기타 양력과 유사한 달력(예: JulianCalendarEastAsianLunisolarCalendar)에 대해 Calendar.TwoDigitYearMax의 기본값이 2029였습니다. 이 값은 00에서 29까지의 두 자리 연도가 2000-2029로 변환되었음을 의미합니다. 30부터 99까지의 두 자리 연도는 1930-1999로 변환됩니다. GregorianCalendar 및 기타 양력과 유사한 달력의 기본 TwoDigitYearMax 속성 값이 이제 2029에서 2049로 변경되었습니다. 새로운 값은 00부터 49까지의 두 자리 연도가 2000-2049로 변환됨을 의미합니다. 50년부터 99년까지의 연도는 1950년부터 1999년까지로 변환됩니다.

또한 Windows에서는 이제 TwoDigitYearMax 속성의 기본값이 해당 Windows 설정에서 가져옵니다(기본값도 이제 2049임). 이는 .NET 5 이전의 동작과 일치합니다.

날짜 구문 분석은 이 변경으로 인해 가장 큰 영향을 받는 기능입니다.

이전 동작

.NET 6 및 .NET 7에서 TwoDigitYearMax에 대한 값을 지정하지 않은 경우 양력을 사용하여 "12/10/35"와 같은 문자열을 구문 분석하면 "1935년 12월 10일" 날짜가 생성됩니다.

새 동작

.NET 8부터 양력을 사용하여 "12/10/35"와 같은 문자열을 구문 분석하면 "2035년 12월 10일" 날짜가 생성됩니다.

도입된 버전

.NET 8 미리 보기 1

호환성이 손상되는 변경의 형식

이 변경 사항은 동작 변경입니다.

변경 이유

현재 연도의 두 자리 연도에 상대적으로 가까운 두 자리 연도를 구문 분석하여 이전 세기 대신 현재 세기의 네 자리 연도를 생성하는 것이 더 논리적입니다. Windows 운영 체제 역시 기본 설정을 같은 숫자(2049)로 변경했습니다.

문자열을 날짜로 구문 분석할 때 앱이 기본값에 의존하지 않도록 하려면 TwoDigitYearMax 속성을 설정하여 두 자리 연도를 네 자리 연도로 변환하는 방법을 제어할 수 있습니다. 다음 코드는 고정 문화권에 대해 설정하는 방법을 보여 줍니다.

CultureInfo clonedInvariantCulture = (CultureInfo)(CultureInfo.InvariantCulture.Clone());
clonedInvariantCulture.DateTimeFormat.Calendar.TwoDigitYearMax = 2039; // Use any desired cutoff value.

DateTime dt = DateTime.Parse("12/25/45", clonedInvariantCulture);

영향을 받는 API

참고 항목