Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

218
Vistas
¿Por qué GetShortestDayName devuelve un nombre más corto de lo esperado?

Se supone que DateTimeFormatInfo.GetShortestDayName(DayOfWeek) devuelve nombres como Su , Mo , etc., como se muestra en el resultado del ejemplo en la documentación de Microsoft .

En cambio, solo obtengo una letra: S , M , etc.

Código para reproducir: (estoy usando WPF .Net 6)

 DateTimeFormatInfo en_us = CultureInfo.GetCultureInfo("en-US").DateTimeFormat; string s = en_us.GetShortestDayName(DayOfWeek.Tuesday);

Esto no me sirve ya que martes y jueves por ejemplo, tienen el mismo identificador. ¿Qué podría causar este problema, para que pueda solucionarlo y obtener el Su , Mo , etc. esperado?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Puede agregar la siguiente configuración a su archivo de proyecto ( .csproj ) para no usar las API de globalización de ICU que se introdujeron en .NET 5:

 <ItemGroup> <RuntimeHostConfigurationOption Include="System.Globalization.UseNls" Value="true" /> </ItemGroup>
over 4 years ago · Santiago Trujillo Denunciar

0

Es probable que esto sea "por diseño" como resultado de cambiar de la forma específica de Windows de obtener información de globalización a datos disponibles públicamente.

El siguiente artículo Cambio importante: las API de globalización usan bibliotecas ICU en Windows explican el cambio (pero, de hecho, no entra en detalles como "si se cambian los nombres cortos"):

A partir de .NET 5, si una aplicación se ejecuta en la actualización de mayo de 2019 de Windows 10 o posterior, las bibliotecas .NET usan las API de globalización de ICU de manera predeterminada.

Y el sitio de la UCI enumera las abreviaturas como uno de los componentes (el resaltado es mío):

Formato: formatee números, fechas, horas y cantidades de moneda de acuerdo con las convenciones de una ubicación elegida. Esto incluye traducir los nombres de los meses y los días al idioma seleccionado, elegir las abreviaturas apropiadas , ordenar los campos correctamente, etc. Estos datos también provienen del repositorio de datos de configuración regional común.

over 4 years ago · Santiago Trujillo Denunciar

0

Esto parece ser un cambio de .NET 4.7.2 a .NET Core 6 (posiblemente todas las versiones de .NET Core; no puedo confirmarlo en este momento).

En .NET 4.7.2 obtengo resultados de dos caracteres; en .NET 6 obtengo resultados de un carácter.

Tampoco veo ninguna documentación en línea que indique que el cambio fue un cambio de ruptura intencional.

Enviaría un ticket de error para actualizar la documentación (y admitir que fue un cambio importante) o revertir el comportamiento.

Una solución sería tomar los primeros dos caracteres de GetAbbreviatedDayName .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda