Sdílet prostřednictvím


Výchozí hodnota TwoDigitYearMax je 2049

Třídy kalendáře, například GregorianCalendar, mají TwoDigitYearMax vlastnost, která definuje poslední rok rozsahu 100 let, který může být reprezentován dvouciferným rokem. Tato vlastnost se často používá k překladu dvoumístného roku na čtyřmístný rok. Dříve byla Calendar.TwoDigitYearMax ve výchozím nastavení nastavena hodnota 2029 pro GregorianCalendar a další kalendáře podobné gregoriánskému kalendáři, například JulianCalendar a EastAsianLunisolarCalendar. Tato hodnota znamenala, že dvouciferné roky od 00 do 29 se přeloží na rok 2000–2029. Dvoumístné roky od 30 do 99 přeloží na 1930–1999. Výchozí TwoDigitYearMax hodnota vlastnosti pro GregorianCalendar kalendáře podobné gregoriánskému formátu se teď změnila z roku 2029 na 2049. Nová hodnota znamená, že dvouciferné roky od 00 do 49 se přeloží na 2000–2049. Každý rok od 50 do 99 bude přeložen do roku 1950–1999.

Kromě toho v systému Windows je nyní výchozí hodnota TwoDigitYearMax vlastnosti získána z odpovídajícího nastavení Systému Windows (výchozí hodnota, pro kterou je nyní také 2049). Odpovídá chování před .NET 5.

Analýza data je funkce, které jsou touto změnou nejvíce ovlivněné.

Předchozí chování

Pokud jste v rozhraní .NET 6 a .NET 7 nezadali hodnotu pro TwoDigitYearMaxanalýzu řetězce jako 12. 10. 35. gregoriánský kalendář, vytvořil datum 10. prosince 1935.

Nové chování

Počínaje rozhraním .NET 8 parsuje řetězec, například 12. 10. 35, s gregoriánským kalendářem, vytvoří datum 10. prosince 2035.

Zavedená verze

.NET 8 Preview 1

Typ zásadní změny

Tato změna je změna chování.

Důvod změny

Je logičtější analyzovat dvouciferný rok, který je relativně blízko dvouciferných číslic aktuálního roku, aby se místo předchozího století vytvořil čtyřmístný rok. Operační systém Windows také změnil výchozí nastavení na stejné číslo (2049).

Pokud nechcete, aby vaše aplikace při analýze řetězce na datum závisela na výchozí hodnotě, můžete určit, jak se dvouciferný rok přeloží na čtyřmístný rok nastavením TwoDigitYearMax vlastnosti. Následující kód ukazuje, jak ji nastavit pro invariantní jazykovou verzi.

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

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

Ovlivněná rozhraní API

Viz také