TwoDigitYearMax 기본값은 2049입니다.
GregorianCalendar와 같은 달력 클래스에는 두 자리 연도로 표시할 수 있는 100년 범위의 마지막 연도를 정의하는 TwoDigitYearMax
속성이 있습니다. 이 속성은 두 자리 연도를 네 자리 연도로 변환하는 데 자주 사용됩니다. 이전에는 GregorianCalendar 및 기타 양력과 유사한 달력(예: JulianCalendar 및 EastAsianLunisolarCalendar)에 대해 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
- System.DateOnly.Parse
- System.DateOnly.ParseExact
- System.DateOnly.TryParse
- System.DateOnly.TryParseExact
- System.DateTime.Parse
- System.DateTime.ParseExact
- System.DateTime.TryParse
- System.DateTime.TryParseExact
- System.DateTimeOffset.Parse
- System.DateTimeOffset.ParseExact
- System.DateTimeOffset.TryParse
- System.DateTimeOffset.TryParseExact
- System.Globalization.GregorianCalendar.TwoDigitYearMax(및 기타 양력과 유사한 달력 형식)
- System.Globalization.GregorianCalendar.ToDateTime(및 기타 양력과 유사한 달력 형식)
- System.Globalization.GregorianCalendar.ToFourDigitYear(Int32)(및 기타 양력과 유사한 달력 형식)
참고 항목
.NET