GUZ
GUZ

Reputation: 647

ASP.NET MVC displaying date without time

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?

Upvotes: 20

Views: 35558

Answers (7)

Toshihiko
Toshihiko

Reputation: 317

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)

Upvotes: 1

Harshali Jadhav
Harshali Jadhav

Reputation: 1

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()})

Upvotes: 0

Yehoshua Levin
Yehoshua Levin

Reputation: 29

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.

Upvotes: 2

zallexy
zallexy

Reputation: 131

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

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

Upvotes: 6

Erik Funkenbusch
Erik Funkenbusch

Reputation: 93424

The problem you have here is that you are using a string value rather than a DateTime.

change your model to be:

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

DataType will only work if it's a DateTime type, you also get the added advantage that it will automatically validate it as a valid date when using a DateTime. If you use string, you will have to use a regular expression validator to ensure a proper date has been entered.

Upvotes: 18

archil
archil

Reputation: 39491

Use DisplayFormatAttribute to indicate format when value is displayed. Also, you could create two DisplayTemplates, Date and DateTime, and use UIHintAttribute to specify template

Upvotes: 5

dove
dove

Reputation: 20674

This should do it for edit mode and display

 [DisplayFormat(ApplyFormatInEditMode = true,DataFormatString = "{0:MM/dd/yyyy}")]

though if it is just display, this might work

[DisplayFormat(DataFormatString = "{0:d}")]

Upvotes: 12

Related Questions