Formato y Cultura de Fechas .Net


El manejo de los formatos de fecha puede llegar a causar inconvenientes en el desarrollo de páginas web en ASP.Net cuando se manejan por medio de cadenas de caracteres y las culturas del sitio web y el servidor de base de datos no coinciden, por tal razón al momento de desarrollar hay que tener en cuenta la cultura idiomática del portal o sitio web desarrollado para que coincida con la cultura del servidor de base de datos. Para esto entonces debemos establecer una llave de configuración en el archivo Web.config denominada globalization. Dicha llave se define de la siguiente manera:

<configuration>
<system.web>
<globalization culture=”es-CO” />
</system.web>
</configuration>

Como se puede ver para este caso se establece la cultura “es-CO” correspondiente al idioma español de Colombia. Dicha cultura es la que va a regir por todo el sitio y con la cual se van a formatear las fechas que se manejen. La idea es colocar la cultura tal como está en el servidor de base de datos para que no haya conflictos o errores de conversión de fechas. Una vez hecho eso, se debe entrar a codificar especificando la cultura que se ha configurado en el archivo Web.config, es decir, cuando se creen nuevas fechas se debe hacer de la siguiente manera (Lenguaje C#):

DateTime DT_fecha = new DateTime(1900, 1, 1, System.Globalization.CultureInfo.CurrentCulture.Calendar);

y cuando se conviertan cadenas de caracteres a fechas se debe hacer de la siguiente manera (Lenguaje C#):

DateTime DT_fechaConvertida = Convert.ToDateTime(“09-27-2010 12:00:00 a.m.”, (IFormatProvider)(System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat));

Para el caso de este idioma español de Colombia se presenta una inconsistencia más y es la hora, en dado caso que el servidor de base de datos siga sin reconocer las fechas con todo lo mencionado anteriormente y si la hora no es requerida en el manejo de fechas, entonces la solución es darle el formato especial ShortDatePattern a la fecha cuando esta es convertida a string (cadena de caracteres), a continuación se muestra como dar el formato “d” correspondiente a ShortDatePattern que se encarga de quitar la hora y dejar solo la fecha (año, mes, día):

String str_fechaFormateada = DT_fecha.ToString(“d”);

De esta manera ya podríamos solucionar los inconvenientes por fechas, aunque cabe anotar que esto hace que el sitio web completo maneje una sola cultura y en caso de que sea un sitio multi-idioma no funcionaría correctamente puesto que la cultura tendría que configurarse dependiendo del idioma en el que se visualice el sitio y no una sola cultura siempre configurada desde el Web.config. De todas formas para el caso mencionado esta solución funciona y podría venirle bien a quien tenga el mismo inconveniente, así que no siendo más, espero haya sido de mucha utilidad.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s