Si trabajas con bases de datos es posible que en ocasiones tengas problemas cuando usas los formatos de fecha habituales como dd-mm-yyyy u otros, un mismo formato puede funcionar en un motor de base de datos y fallar en otro.
No obstante el formato Ansi es un estándar aceptado por todos los motores de base de datos, así que una buena idea es convertir tus fechas a ese formato cuando vayas a hacer operaciones de inserción actualización o vayas a usar fechas en tus condiciones de búsqueda.
Esta sencilla función te ayudará con ello.
/// <summary>
/// Convierte una fecha en formato Ansi
/// </summary>
/// <param name=”d“>fecha a convertir</param>
/// <param name=”onlyDate“>Especifica si se quiere generar solo fecha o fecha+hora</param>
/// <returns>la fecha convertida en formato Ansi</returns>
public static string AnsiDate (DateTime d, bool onlyDate)
{
string _year = “”;
string _month = “”;
string _day = “”;
string _hour = “”;
string _minute = “”;
string _second = “”;
try
{
_year = Convert.ToString(d.Year);
_month = Convert.ToString(d.Month);
_day = Convert.ToString(d.Day);
_hour = Convert.ToString(d.Hour);
_minute = Convert.ToString(d.Minute);
_second = Convert.ToString(d.Second);
if (d.Month <= 9)
{
_month = “0” + _month;
}
if (d.Day <= 9)
{
_day = “0” + _day;
}
if (d.Hour <= 9)
{
_hour = “0” + _hour;
}
if (d.Minute <= 9)
{
_minute = “0” + _minute;
}
if (d.Second <= 9)
{
_second = “0” + _second;
}
if (onlyDate)
{
return _year + _month + _day;
}
else
{
return _year + _month + _day + ” “ + _hour + “:” + _minute + “:” + _second;
}
}
catch (Exception ex)
{
MessageBox.Show(“Error:” + Environment.NewLine + ex.Message, “AnsiDate”, MessageBoxButtons.OK, messageBoxIcon.Error);
return null;
}
}
Para poner a prueba la función puedes implementar este código:
private void fechaEnFormatoANSIToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show(MyClase.AnsiDate(DateTime.Now, true), “Test AnsiDate solo fecha”,
MessageBoxButtons.OK, MessageBoxIcon.Information);
MessageBox.Show(MyClase.AnsiDate(DateTime.Now, false), “Test AnsiDate fecha y hora”,
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
Te mostrará la fecha y la hora actual en tu sistema en dos cuadros de diálogo.
Ponlo a prueba, piensa en cómo mejorarlo y comparte con nosotros tus progresos.