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.
Doporučená akce
Pokud jste se spoléhali na předchozí chování, předejte CultureInfo.CurrentCulturenull
parametru nebo vlastní jazykovou verziculture
.
Ovlivněná rozhraní API
- System.ComponentModel.DateOnlyConverter.ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type)
- System.ComponentModel.DateTimeConverter.ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type)
- System.ComponentModel.DateTimeOffsetConverter.ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type)
- System.ComponentModel.TimeOnlyConverter.ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type)
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro