Aracılığıyla paylaş


TwoDigitYearMax varsayılan değeri 2049'dur

gibi GregorianCalendartakvim sınıflarının, iki basamaklı bir TwoDigitYearMax yılla temsil edilebilen 100 yıllık aralığın son yılını tanımlayan bir özelliği vardır. Bu özellik genellikle iki basamaklı yılı dört basamaklı bir yıla çevirmek için kullanılır. Önceden Calendar.TwoDigitYearMax, GregorianCalendar ve JulianCalendar, EastAsianLunisolarCalendar gibi Gregoryen benzeri takvimler için varsayılan olarak 2029 olarak ayarlanırdı. Bu değer, 00 ile 29 arasındaki iki basamaklı yılların 2000-2029'a çevrildiği anlamına geliyordu. 30 ile 99 arasındaki iki basamaklı yıllar 1930-1999'a çevrilmiştir. Ve diğer Gregoryen benzeri takvimler için TwoDigitYearMax varsayılan GregorianCalendar özellik değeri artık 2029'dan 2049'a değiştirildi. Yeni değer, 00 ile 49 arasındaki iki basamaklı yılların 2000-2049'a çevrildiği anlamına gelir. 50 ile 99 arası herhangi bir yıl 1950-1999'a çevrilecektir.

Buna ek olarak, Windows'da, özelliğin TwoDigitYearMax varsayılan değeri artık ilgili Windows ayarından (artık 2049 olan varsayılan değer) elde edilir. Bu, .NET 5'in önceki davranışıyla eşleşir.

Tarih ayrıştırma, bu değişiklikten en çok etkilenen işlevdir.

Önceki davranış

.NET 6 ve .NET 7'de için bir değer TwoDigitYearMaxbelirtmediyseniz, Gregoryen takvimle "12/10/35" gibi bir dize ayrıştırdığınızda "10 Aralık 1935" tarihi üretilir.

Yeni davranış

.NET 8'den başlayarak, Gregoryen takvimle "12/10/35" gibi bir dize ayrıştırılması "10 Aralık 2035" tarihini üretir.

Sürüm kullanıma sunulmuştur

.NET 8 Preview 1

Kesinti yaratan değişiklik türü

Bu değişiklik davranışsal bir değişikliktir.

Değişiklik nedeni

Mevcut yüzyılda dört basamaklı bir yıl oluşturmak için, mevcut yılın son iki basamağına görece yakın olan iki basamaklı bir yılı çözümlemek, önceki yüzyıla göre daha mantıklıdır. Windows işletim sistemi de varsayılan ayarlarını aynı sayıya (2049) değiştirdi.

Uygulamanızın bir dizeyi bir tarihe ayrıştırırken varsayılan değere bağımlı olmasını istemiyorsanız, özelliğini ayarlayarak TwoDigitYearMax iki basamaklı bir yılın dört basamaklı yıla nasıl çevrildiğini denetleyebilirsiniz. Aşağıdaki kod, sabit kültür için nasıl ayarlandığını gösterir.

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

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

Etkilenen API'ler

Ayrıca bakınız