none
Formato fecha Americano vb.net RRS feed

  • Pregunta

  • Buenos Días

    Necesito insertar fechas en formato americano en una base de datos azure pero tengo el siguiente problema.

    Cuando realizar la conversión en la fecha por ejemplo:

    Mi fecha: 02/01/2016 --- Conversión formato americano: 01/02/2016 ---- Fecha Insertada: 01/02/2016

    Mi fecha: 13/01/2016 --- Conversión formato americano: 01/13/2016 ---- Fecha Insertada: 13/01/2016

    El formato americano lo recibo en String pero en el primer caso no me lo realiza como yo quiero por tanto he intentado el formato americano parsearlo en datetime o date pero para la fecha tipo 13/01/2016 me da error lógicamente por el mes..... pero de la otra forma para la fecha tipo 02/01/2016 no me inserta el resultado que yo quiero...

    me gustaría saber cual seria la forma correcta de convertir la fecha.

    Conversion String:

    Dim fechaAmericana As String = Format(DataFormatar, "MM-dd-yyyy")

    Conversion DateTime:

    Dim fechaAmericana As DateTime = DateTime.Parse(DataFormatar.ToString, New Globalization.CultureInfo("en-US", False))

    Muchisimas Gracias por adelantado.

    miércoles, 28 de diciembre de 2016 11:05

Respuestas

  • Veo problemas con la última de las conversiones que has puesto. Ahí usas "DataFormatear.ToString", cosa que te generará un string en el formato que tenga el CurrentCulture. Y después ese string intentas parsearlo con otro CultureInfo diferente, lo cual dará resultados imprevisibles, porque el string formateado con un cultureInfo no tiene por qué arrojar resultados razonables al interpretarlo en otro cultureinfo distinto.

    La cuestión es por qué estás haciendo todo esto. Lo razonable es que el programa maneje las fechas todo el rato en variables de tipo DateTime (que son internamente binarias, no contienen ninguna clase de formato) y cuando haya que pasarlas a la base de datos, parametrizar la sentencia de inserción y entregarle al parámetro directamente el DateTime en binario. De esta forma, siempre se graba el valor correcto y no tienes que hacer conversiones en ningún sitio.

    viernes, 30 de diciembre de 2016 11:14
    Moderador