Sdílet prostřednictvím


Převaděče data a času dodržují argument jazykové verze

Metody ConvertTo v následujících třídách nyní používají jazykovou verzi z parametru culture jako zprostředkovatele formátu pro datum a čas místo CultureInfo.CurrentCulture:

Předchozí chování

Dříve se ovlivněná rozhraní API používalaCultureInfo.CurrentCulture jako zprostředkovatel formátu pro datum a čas, i když volající v parametru culture zadal jazykovou verzi.

Představte si následující fragment kódu, který nastaví aktuální jazykovou verzi na španělštinu (Španělsko), ale předává přizpůsobenou francouzskou jazykovou verzi .DateTimeConverter.ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type)

CultureInfo.CurrentCulture = new CultureInfo("es-ES");
Console.WriteLine($"Current culture: {CultureInfo.CurrentCulture}");

var dt1 = new DateTime(2022, 8, 1);

var frCulture = new CultureInfo("fr-FR");
frCulture.DateTimeFormat.ShortDatePattern = "dd MMMM yyyy";

Console.WriteLine(TypeDescriptor.GetConverter(dt1).ConvertTo(null, frCulture, dt1, typeof(string)));

V .NET 7 a starších verzích tento kód vytiskne datum ve správném formátu, ale s názvem měsíce ve španělštině místo francouzštiny:

Current culture: es-ES
01 agosto 2022

Nové chování

Počínaje rozhraním .NET 8 používají ovlivněná rozhraní API jazykovou verzi určenou culture parametrem jako zprostředkovatele formátu.

Fragment kódu zobrazený v předchozím chování správně vytiskne název měsíce ve francouzštině:

Current culture: es-ES
01 août 2022

Zavedená verze

.NET 8 Preview 4

Typ zásadní změny

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

Důvod změny

Tato změna opravuje chybu, která ConvertTo nebyla konzistentní s ConvertFrom. Použil řetězce formátu data a času ze vstupní jazykové verze, ale naformátoval datum a čas pomocí CurrentCulture.

Pokud jste se spoléhali na předchozí chování, předejte CultureInfo.CurrentCulturenullparametru nebo vlastní jazykovou verziculture.

Ovlivněná rozhraní API