Partager via


La valeur par défaut de TwoDigitYearMax est 2049

Les classes de calendrier, telles que GregorianCalendar, ont une TwoDigitYearMax propriété 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 Calendar.TwoDigitYearMax était 2029 pour GregorianCalendar et les autres calendriers de type grégorien, 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 sont traduites par 1930 à 1999. La valeur par défaut de la propriété TwoDigitYearMax pour GregorianCalendar et d'autres calendriers similaires au calendrier grégorien a maintenant changé 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 de 50 à 99 sera traduite en 1950-1999.

En outre, sur Windows, la valeur par défaut de la TwoDigitYearMax propriété est maintenant obtenue à partir du paramètre Windows correspondant (la valeur par défaut pour laquelle est désormais également 2049). Cela correspond au comportement avant .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’avez pas spécifié de valeur pour TwoDigitYearMax, analysez une chaîne telle que « 12/10/10/35 » avec le calendrier grégorien a produit la date « 10 décembre 1935 ».

Nouveau comportement

À compter 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 de la modification

Il est plus logique d’interpréter 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 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 TwoDigitYearMax propriété. Le code suivant montre comment le 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