Freigeben über


TwoDigitYearMax lautet standardmäßig 2049

Kalenderklassen wie GregorianCalendar verfügen über eine TwoDigitYearMax-Eigenschaft, die das letzte Jahr eines Bereichs von 100 Jahren definiert, das durch eine Jahresangabe mit zwei Stellen dargestellt werden kann. Diese Eigenschaft wird häufig verwendet, um ein zweistelliges Jahr in ein vierstelliges Jahr zu übersetzen. Zuvor wurde von Calendar.TwoDigitYearMax für GregorianCalendar und andere gregorianische Kalender wie JulianCalendar und EastAsianLunisolarCalendar standardmäßig 2029 verwendet. Dieser Wert bedeutete, dass zweistellige Jahre von 00 bis 29 in 2000 bis 2029 übersetzt wurden. Zweistellige Jahre von 30 bis 99 wurden in 1930 bis 1999 übersetzt. Der Standardeigenschaftswert TwoDigitYearMax für GregorianCalendar und andere gregorianische Kalender wurde jetzt von 2029 in 2049 geändert. Der neue Wert bedeutet, dass zweistellige Jahre von 00 bis 49 in 2000 bis 2049 übersetzt werden. Jahre zwischen 50 und 99 werden in 1950 bis 1999 übersetzt.

Darüber hinaus wird jetzt unter Windows der Standardwert der TwoDigitYearMax-Eigenschaft aus der entsprechenden Windows-Einstellung abgerufen (für die der Standardwert nun auch 2049 ist). Dies entspricht dem Verhalten vor .NET 5.

Diese Änderung betrifft in erster Linie die Datumsanalyse.

Vorheriges Verhalten

Wenn Sie in .NET 6 und .NET 7 keinen Wert für TwoDigitYearMax angegeben haben, ergab die Analyse einer Zeichenfolge wie „12/10/35“ mit dem gregorianischen Kalender das Datum „10. Dezember 1935“.

Neues Verhalten

Ab .NET 8 ergibt die Analyse einer Zeichenfolge wie „12/10/35“ mit dem gregorianischen Kalender das Datum „10. Dezember 2035“.

Eingeführt in Version

.NET 8 Preview 1

Typ des Breaking Changes

Diese Änderung ist eine Verhaltensänderung.

Grund für die Änderung

Es ist logischer, bei der Analyse eines zweistelligen Jahres, das relativ nahe an den beiden Ziffern des aktuellen Jahres liegt, ein vierstelliges Jahr im aktuellen Jahrhundert zu erhalten (anstatt eines vierstelligen Jahres im vorherigen Jahrhundert). Auch die Standardeinstellungen des Windows-Betriebssystems wurden in diese Zahl (2049) geändert.

Wenn Ihre App bei der analysebasierten Umwandlung einer Zeichenfolge in ein Datum nicht den Standardwert heranziehen soll, können Sie durch Festlegen der TwoDigitYearMax-Eigenschaft steuern, wie ein zweistelliges Jahr in ein vierstelliges Jahr übersetzt werden soll. Der folgende Code zeigt, wie sie für die invariante Kultur festgelegt wird:

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

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

Betroffene APIs

Siehe auch