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:
Muchas gracias por compartir tu conocimiento.
Saludos y nuevamente gracias.
Publicar un comentario