Pregunta

¿Cuál es la mejor manera de localizar un descriptor de formato de fecha?

Como sabe cualquiera de una cultura que no utiliza el formato mm/dd/aaaa, es molesto tener que ingresar fechas en este formato.El marco .NET proporciona muy buen soporte de localización, por lo que es trivial analizar las fechas de acuerdo con la cultura de los usuarios, pero a menudo también desea mostrar una sugerencia útil sobre el formato requerido (especialmente para distinguir entre yy y yyyy, que es intercambiable en la mayoría de las culturas).

¿Cuál es la mejor manera de hacer esto de una manera que tenga sentido para la mayoría de los usuarios (p. ej.dd/M/yyy es confuso debido al cambio de mayúsculas y minúsculas y al cambio entre una y dos letras).

¿Fue útil?

Solución 3

Aquí está mi método actual.¿Alguna sugerencia?

Regex singleMToDoubleRegex = new Regex("(?<!m)m(?!m)");
Regex singleDToDoubleRegex = new Regex("(?<!d)d(?!d)");
CultureInfo currentCulture = CultureInfo.CurrentUICulture;

// If the culture is netural there is no date pattern to use, so use the default.
if (currentCulture.IsNeutralCulture)
{
    currentCulture = CultureInfo.InvariantCulture;
}

// Massage the format into a more general user friendly form.
string shortDatePattern = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern.ToLower();
shortDatePattern = singleMToDoubleRegex.Replace(shortDatePattern, "mm");
shortDatePattern = singleDToDoubleRegex.Replace(shortDatePattern, "dd");

Otros consejos

Solo usa ISO-8601.Es un estándar internacional.

Date and time (current at page generation) expressed according to ISO 8601:
Date:                           2014-07-05
Combined date and time in UTC:  2014-07-05T04:00:25+00:00
                                2014-07-05T04:00:25Z
Week:                           2014-W27
Date with week number:          2014-W27-6
Ordinal date:                   2014-186

Tengo que estar de acuerdo con las fechas "incorrectas" de OP realmente con mi educación DD/MM/AAAA y encuentro que trabajar con fechas y horas ISO 8601 es extremadamente fácil.Por una vez, la norma acertó y engtech tiene la respuesta obvia que no requiere localización.

Iba a informar el formulario de entrada de cumpleaños en el desbordamiento de pila como un error debido a lo molesto que es para la mayoría del mundo.

El problema con las normas internacionales es que prácticamente nadie las utiliza.Lo intento donde puedo, pero me veo obligado a usar dd/mm/aaaa en casi todas partes de la vida real, lo que significa que estoy tan acostumbrado a ello que siempre es un proceso consciente usar ISO-8601.Para la mayoría de las personas que ni siquiera intentan utilizar ISO-8601, es aún peor.Si puedes internacionalizarte donde puedas, creo que es una gran ventaja.

¿Qué tal dar el formato (dd/mm/aaaa o dd/mm/aaaa) seguido de una copia impresa de la fecha de hoy en la cultura del usuario?MSDN tiene un artículo sobre formatear un DateTime para la cultura de la persona, utilizando el objeto CultureInfo que podría resultar útil para hacer esto.Una combinación del formato (con el que la mayoría de la gente está familiarizada) con la fecha actual representada en ese formato debería ser una pista suficiente para la persona sobre cómo debe ingresar la fecha.(También incluye un control de calendario para aquellos que aún no pueden entenderlo).

Una forma breve es conveniente y ayuda a evitar errores de ortografía.Localice según corresponda, pero asegúrese de mostrar el formato esperado (no deje ciego al usuario).Proporcionar un control de selección de fechas como opcional asistente para completar el campo.

Como extra, el análisis sobre la marcha y la visualización de la fecha en formato largo también podrían ayudar.

Mejor opción:En su lugar, recomendaría utilizar un selector de fechas estándar.

Alternativa:cada vez que cambie el contenido del control de edición, analícelo y muestre (¿en un control separado?) el formato largo de la fecha (es decir:entrada "04/03/09" pantalla "Su entrada:4 de marzo de 2009")

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top