ASP.NET MVC displaying date without time

Viewed 31673

I have my model field decorated in the following way:

[DataType(DataType.Date)]
[Display(Name = "Date of birth")]
public string DateOfBirth { get; set; }

When I want to display the value in the view using the following code:

<%: Html.DisplayFor(m => m.DateOfBirth) %>

The problem is that the date is displayed together with its time value. I wonder why it does not take DateType attribute into consideration and displays only the date value without time. I know that I may create a display template for DateTime but in other cases than date of birth I want to show time together with date. How to solve the problem?

7 Answers

You can use ToShortDateString() or ToLongDateString() to display date only,example:

@Model.EventDate.ToShortDateString()
@Model.EventDate.ToLongDateString()

If your date is of type DateTime, and ToShortDateString() or ToLongDateString() still doesn't work, check if your DateTime is nullable (DateTime?). Making it not nullable can do the trick.

If you are using MVC, perhaps you can try this on your client side script:

@{
      string birthDateOnly = Model.DateOfBirth.Date.ToShortDateString();
 }
@Html.DisplayTextFor(m => birthDateOnly)

using @Value and ToShortDateString() you can display only date.

@Html.TextBoxFor(model => model.StartDate, "", new { id = "date", @class = "datepicker", @style = "width:70%; height:30px;", @placeholder = "Enter Date", @Value = @Model.StartDate.ToShortDateString()})
Related