es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La cadena no fue reconocida como una fecha y hora válida usando ParseExact.

Estoy tratando de obtener datos de Angular y guardarlos en una base de datos a través de WebAPI utilizando C#. Ahora tengo un problema al convertir la fecha de nacimiento (DOB), obtengo este error:

“la cadena no se reconoce como una fecha y hora válida”

Formato de fecha en Angular: “mié ene 05 2022 00:00:00 GMT+0530 (India Standard Time)”

Formato de fecha en la base de datos: “AAAA-MM-DD”

Ahora necesito convertirlo a este formato.

string dob = httprequest.Form.Get("dob");

MySqlConnection myConnection = new MySqlConnection();
myConnection.ConnectionString = @"Data Source=localhost; Database=pramod; User ID=itesuser; password=ites; Port=3309";

MySqlCommand sqlCmd = new MySqlCommand();
sqlCmd.CommandType = CommandType.Text;
sqlCmd.CommandText = "Insert Into emp_ang (DOB) Values (@dob)";
sqlCmd.Connection = myConnection;

DateTime birth = DateTime.ParseExact(dob, "yyyy/MM/dd", CultureInfo.InvariantCulture);
sqlCmd.Parameters.AddWithValue("@dob", birth);
myConnection.Open();
int rowInserted = sqlCmd.ExecuteNonQuery();
myConnection.Close();
return Ok("inserted");
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Según el mensaje de error, parece que la cadena pasada para dob no puede ser reconocida como un formato de fecha y hora válido.

    El formato de fecha de Angular especificado es "Mié ene 05 2022 00:00:00 GMT+0530 (Hora estándar de India)" y el formato de fecha de la base de datos es "AAAA-MM-DD". Para convertir la cadena de fecha del formato de Angular al formato de la base de datos, puedes usar el método DateTime.ParseExact() con la cadena de formato adecuada.

    En el fragmento de código proporcionado, puedes reemplazar la cadena de formato "yyyy/MM/dd" por "ddd MMM dd yyyy HH:mm:ss 'GMT'zzz", que coincide con el formato de fecha de Angular especificado. El código modificado para realizar la conversión e insertar la fecha en la tabla de la base de datos puede ser el siguiente:

    string dob = httprequest.Form.Get("dob");
    
    MySqlConnection myConnection = new MySqlConnection();
    myConnection.ConnectionString = @"Data Source=localhost; Database=pramod; User ID=itesuser; password=ites; Port=3309";
    
    MySqlCommand sqlCmd = new MySqlCommand();
    sqlCmd.CommandType = CommandType.Text;
    sqlCmd.CommandText = "Insert Into emp_ang (DOB) Values (@dob)";
    sqlCmd.Connection = myConnection;
    
    DateTime birth = DateTime.ParseExact(dob, "ddd MMM dd yyyy HH:mm:ss 'GMT'zzz", CultureInfo.InvariantCulture);
    string dbDateFormat = birth.ToString("yyyy-MM-dd");
    sqlCmd.Parameters.AddWithValue("@dob", dbDateFormat);
    myConnection.Open();
    int rowInserted = sqlCmd.ExecuteNonQuery();
    myConnection.Close();
    return Ok("inserted");
    

    Este código primero analiza la cadena dob utilizando DateTime.ParseExact() y la cadena de formato especificada. Luego, convierte el objeto DateTime resultante al formato de fecha de la base de datos ("yyyy-MM-dd") utilizando el método ToString(), y establece el valor del parámetro para el comando SQL. Finalmente, ejecuta el comando SQL para insertar la fecha en la base de datos.

Comments are closed.