Conversores de data e hora respeitam o argumento de cultura
Os métodos ConvertTo
nas seguintes classes agora usam a cultura do parâmetro culture
como o provedor de formato para a data e a hora em vez de CultureInfo.CurrentCulture:
Comportamento anterior
Anteriormente, as APIs afetadas usavam CultureInfo.CurrentCulture como provedor de formato para data e hora, mesmo que o chamador especificasse uma cultura no parâmetro culture
.
Considere o snippet de código a seguir que define a cultura atual como Espanhol (Espanha), mas passa a cultura personalizada Francês para 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)));
No .NET 7 e em versões anteriores, esse código imprime a data no formato correto, mas com o nome do mês em espanhol em vez de francês:
Current culture: es-ES
01 agosto 2022
Novo comportamento
Começando no .NET 8, as APIs afetadas usam a cultura especificada pelo parâmetro culture
como provedor de formato.
O snippet de código mostrado no Comportamento anterior imprime corretamente o nome do mês em francês:
Current culture: es-ES
01 août 2022
Versão introduzida
.NET 8 versão prévia 4
Tipo de alteração interruptiva
Esta é uma alteração comportamental.
Motivo da alteração
Essa alteração corrige um bug em que ConvertTo
não era consistente com ConvertFrom
. Ele usava as cadeias de caracteres de formato de data e hora da cultura de entrada, mas formatava a data e a hora com CurrentCulture.
Ação recomendada
Se você se baseou no comportamento anterior, passe CultureInfo.CurrentCulture, null
ou uma cultura personalizada para o parâmetro culture
.
APIs afetadas
- 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)
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de