Partage via


La valeur par défaut de TwoDigitYearMax est 2049

Les classes de calendrier, telles que GregorianCalendar, ont une propriété TwoDigitYearMax qui définit la dernière année d’une plage de 100 ans qui peut être représentée par une année à deux chiffres. Cette propriété est souvent utilisée pour traduire une année à deux chiffres en une année à quatre chiffres. Auparavant, la valeur par défaut de Calendar.TwoDigitYearMax était 2029 pour GregorianCalendar et les autres calendriers grégoriens, tels que JulianCalendar et EastAsianLunisolarCalendar. Cette valeur signifie que les années à deux chiffres comprises entre 00 et 29 sont traduites en 2000-2029. Les années à deux chiffres de 30 à 99 étaient traduites en 1930-1999. La valeur de propriété TwoDigitYearMax par défaut de GregorianCalendar et des autres calendriers grégoriens est maintenant passée de 2029 à 2049. La nouvelle valeur signifie que les années à deux chiffres comprises entre 00 et 49 sont traduites en 2000-2049. Toute année comprise entre 50 et 99 sera traduite en 1950-1999.

En outre, sur Windows, la valeur par défaut de la propriété TwoDigitYearMax est maintenant obtenue à partir du paramètre Windows correspondant (la valeur par défaut pour celui-ci est désormais également 2049). Cela correspond au comportement antérieur à .NET 5.

L’analyse de dates est la fonctionnalité qui est la plus affectée par cette modification.

Comportement précédent

Dans .NET 6 et .NET 7, si vous n’aviez pas spécifié de valeur pour TwoDigitYearMax, l’analyse d’une chaîne telle que « 12/10/35 » avec le calendrier grégorien produisait la date « 10 décembre 1935 ».

Nouveau comportement

À partir de .NET 8, l’analyse d’une chaîne telle que « 12/10/35 » avec le calendrier grégorien produit la date « 10 décembre 2035 ».

Version introduite

.NET 8 Préversion 1

Type de changement cassant

Ce changement est un changement de comportement.

Raison du changement

Il est plus logique d’analyser une année à deux chiffres qui est relativement proche des deux chiffres de l’année en cours pour produire une année à quatre chiffres dans le siècle actuel plutôt que dans le siècle précédent. Le système d’exploitation Windows a également modifié ses paramètres par défaut par le même nombre (2049).

Si vous ne souhaitez pas que votre application dépende de la valeur par défaut lors de l’analyse d’une chaîne à une date, vous pouvez contrôler la façon dont une année à deux chiffres est traduite en année à quatre chiffres en définissant la propriété TwoDigitYearMax. Le code suivant montre comment la définir pour la culture invariante.

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 affectées

Voir aussi