miércoles, 26 de mayo de 2010

IsFecha. Un IsDate en C# para fechas en es-ES

Las malditas fechas en conjunción con el IIS y el SQL pueden causar más de un dolor de cabeza a cualquiera :)

Por eso me he echo una función similar al IsDate de Visual Basic.Net pero para C# y que me permite identificar una fecha en formato dd/MM/yyyy en cualquier idioma del servidor.

/// <summary>
///
Comprueba si el valor es una fecha.
/// </summary>
/// <param name="cadenaFecha"></param>
/// <returns>
Se comprueba en la Cultura es-ES (España).</returns>
static public Boolean IsFecha (string cadenaFecha)
{
CultureInfo es = new CultureInfo("es-ES");
DateTime fechaTemp;

return DateTime.TryParseExact(cadenaFecha, "dd/MM/yyyy", es, DateTimeStyles.AdjustToUniversal, out fechaTemp);
}


Y aquí otro método para realizar la conversión de texto en un objeto DateTime que también se pase por el arco de la gloría el idioma del SO del servidor o del IIS.


/// <summary>
///
Convierte una cadena en fecha. Si falla en la conversión devuelve la fecha actual.
/// </summary>
/// <param name="fecha"></param>
/// <returns></returns>
static public DateTime convierteEnFecha(string fecha)
{
CultureInfo es = new CultureInfo("es-ES");
DateTime fechaTemp = DateTime.Now;

if (DateTime.TryParseExact(fecha, "dd/MM/yyyy", es, DateTimeStyles.None, out fechaTemp) == false)
{ fechaTemp = DateTime.Now; }

return fechaTemp;
}

Ahora a investigar si cambiando la cultura de toda la web me valdría… :)

1 comentario:

Anónimo dijo...

Muchas gracias por compartir tu conocimiento.

Saludos y nuevamente gracias.