Problema al guardar la fecha en sql server C# ASP.NET Entity Framework Core

publicado por: Anonymous

escribo en esta oportunidad porque tengo un problema al guardar la fecha en asp.net core, la base de datos que utilizo es Sql server 2014 y el idioma del servidor es ingles, el problema que presento es que cuando guardo me sale este error:

String ’22-02-2019′ was not recognized as a valid DateTime

Y también que edito el mes y me cambie es el día.

Para guardar lo utilizo así:

var p = Convert.ToDateTime(periodo);
var fecha = DateTime.ParseExact(p.ToString("dd-MM-yyyy"), "dd-MM-yyyy", System.Globalization.CultureInfo.CurrentCulture);

ConversionMoneda conversion = new ConversionMoneda();
conversion.Cmo_periodo = fecha;
conversion.Cmo_factor_de = fromConversion;
conversion.Cmo_created_at = DateTime.Now;
conversion.Cmo_updated_at = DateTime.Now;
context.Add(conversion);
context.SaveChanges();

Estoy utilizando entity framework core, en el archivo web.config lo tengo así:

<globalization culture="es-ES"  uiCulture="es-ES"  />

En mi archivo JS utilizo el plugin datepicker:

$('.mydatepicker').datepicker({
    format: "dd-MM-yyyy",
    clearBtn: true,
    language: "es",
    autoclose: true,
    keyboardNavigation: false,
    todayHighlight: true
});

Pero a la final no me guardar como quiero sino me guarda mes-dia-año tal como lo tiene configurado la fecha y hora en el servidor pero en le formulario seleccionan dia-mes-año, que me recomienda que pueda hacer?

solución

El formato con el cual visualizas en la tabla de la db no tiene ninguna relacion a como visualizas o trabajas esa fecha en la vista.

Si el datepicker usa un formato en concreto solo debes asigurarte que el DateTime lo intepreta correctamente.

Podrias definir la cultura del sitio web mediante configuracion usando

<system.web>
    <globalization culture="es-ES" uiCulture="es-ES" />
</system.web>

de esta forma si la UI envia una fecha en formato dd-MM-yyyy lo reconocera perfectamente porque la cultura del sitio es la misma, al usar

var p = Convert.ToDateTime(periodo);

aplicara sin problemas y podras asignar la propiedad

conversion.Cmo_periodo = p;

Ahora bien al recuperar a fecha y asignarla al datepickerquizas debas aplicar formato, para eso se utiliza la libreria moment.js

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *