En MVC razor, estoy poniendo la fecha actual en la base de datos de esta manera.
model.Returndate = DateTime.Now.Date.ToShortDateString();
Dado que el campo de la base de datos es un tipo de datos de fecha y hora y estoy convirtiendo la fecha actual a formato de cadena, esto no funciona ... ¿cómo puedo hacer esto? Estoy haciendo el formato de cadena porque quiero la fecha en formato mm / dd / aaaa y no en mm / dd / aaaa hh: mm: formato de hora ss.
EDITAR:
En el controlador tengo
var model = new ViewModel();
model.ReturnDate = DateTime.Now;
return PartialView("PartialView", model);
En la vista parcial, tengo
@Html.EditorFor(model => model.Returndate)
Aquí es donde se muestra la fecha como Fecha y Hora juntas ... Quiero que se muestre solo la fecha. No es el momento. Espero que esta edición se explique mejor.
c#
asp.net-mvc
asp.net-mvc-3
datetime
ZVenue
fuente
fuente
ToString("mm/dd/yyyy");
para poder ver exactamente lo que desea.DateTime
. Usted hace el formato de cadena en la SALIDA ... Solo formatee en el visor final.Respuestas:
Si el tipo de columna es DateTime en SQL, almacenará una hora en la que pase una o no.
Sería mejor guardar la fecha correctamente:
y luego formatee cuando necesite mostrarlo:
O si está utilizando EditorFor:
o
Para agregar una propiedad a su modelo, agregue este código:
Luego, en su PartialView:
EDITAR:
Hola chicos, solo quiero aclarar para esta respuesta que al decir 'Si está usando EditorFor', eso significa que necesita tener una plantilla EditorFor para el tipo de valor que está tratando de representar.
Las plantillas de editor son una forma genial de administrar controles repetitivos en MVC:
http://coding-in.net/asp-net-mvc-3-how-to-use-editortemplates/
Puede usarlos para tipos ingenuos como String como lo hice anteriormente; pero son especialmente excelentes para permitirle crear una plantilla de un conjunto de campos de entrada para un tipo de datos más complicado.
fuente
Solo tuve que lidiar con este escenario yo mismo; encontré una manera realmente fácil de hacer esto, simplemente anote su propiedad en el modelo de esta manera:
También ocultará el botón de hora del selector de fecha.
Lo siento si esta respuesta es un poco tarde;)
fuente
Esto funciona si desea mostrar en un TextBox:
fuente
La fecha / hora en la base de fechas no será una versión formateada en absoluto. Será solo la fecha / hora en sí. Cómo muestra esa fecha / hora cuando extrae el valor de la base de datos es un asunto diferente. Sospecho fuertemente que realmente solo quieres:
o posiblemente
Sí, si miras la base de datos usando SQL Server Studio o lo que sea, ahora verás la medianoche, pero eso es irrelevante, y cuando extraes la fecha de la base de datos y la muestras a un usuario, entonces se puede aplicar el formato relevante .
EDITAR: Con respecto a su pregunta editada, el problema no está en el modelo, sino en cómo especifica la vista. Deberías usar algo como:
donde
d
es el especificador de formato de fecha y hora estándar para el patrón de fecha corta (lo que significa que tendrá en cuenta la configuración cultural actual).Esa es la parte que he estado diciendo repetidamente: que cuando muestra la fecha / hora al usuario , ese es el momento para formatearla como una fecha sin una hora.
EDITAR: Si esto no funciona, debería haber una forma de decorar el modelo o la vista con una cadena de formato, o algo así. No soy realmente una persona MVC, pero se siente como si hubiera debería haber una buena manera de hacer esto declarativamente ...
fuente
Puede modificar su ViewModel de la siguiente manera:
fuente
Puede aplicar un formato de fecha y hora personalizado usando
ToString
como:DateTime.ToString
Puede encontrar más información sobre el patrón de formatos aquí y aquí .Editar: después de editar su pregunta, al igual que lo que otros sugirieron, debe aplicar el formato de fecha en su vista:
fuente
model.Returndate.ToString("mm/dd/yyyy")
?No estoy seguro en Razor pero en ASPX lo haces:
Debe haber algo similar en Razor. Espero que esto ayude a alguien.
fuente
Si tiene un bucle for como el que se muestra a continuación.
Cambie @ item.StartDate a @ item.StartDate.Value.ToShortDateString ()
Esto eliminará el tiempo en caso de que no pueda anotar su propiedad en el modelo como en mi caso.
fuente
Incluya anotaciones de datos como DisplayFormat y ApplyFormatInEditMode para obtener el resultado deseado.
[Display(Name = "Bill Date")] [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] public DateTime BillDate { get; set; }
Ahora su fecha de facturación se mostrará como.
fuente
Simplemente podría convertir la fecha y hora. Algo como:
fuente
Tuve algunos problemas con las otras soluciones en esta página, así que pensé en incluir esto.
Por lo tanto, solo necesita agregar "{0: d}" en el segundo parámetro y debería estar listo para comenzar.
fuente