使用razor转换date时间格式

以下哪里出了什么问题?

@Convert.ToDateTime((@item.Date.ToShortDateString())," dd - M - yy") 

@ item.Date显示20/11/2005 12:00 am,我想显示2011年11月20日

尝试:

 @item.Date.ToString("dd MMM yyyy") 

或者你可以在视图模型上使用[DisplayFormat]属性:

 [DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")] public DateTime Date { get; set } 

在你看来简单:

 @Html.DisplayFor(x => x.Date) 

这是解决方法:

 @item.Published.Value.ToString("dd. MM. yyyy") 

ToString()之前使用Value

[DisplayFormat]属性仅用于EditorFor / DisplayFor,而不是像TextBoxFor这样的原始HTML API。 我做了以下工作,

模型:

 [Display(Name = "When was that document issued ?")] [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")] public DateTime? LiquorLicenceDocumentIssueDate { get; set; } 

视图:

  <div id="IsLiquorLicenceDocumentOnPremisesYes" class="groupLongLabel"> @Html.LabelFor(m => m.LiquorLicenceDocumentIssueDate) <span class="indicator"></span> @Html.EditorFor(m => m.LiquorLicenceDocumentIssueDate) <span id="validEmail"></span> <br /> @Html.ValidationMessageFor(m => m.LiquorLicenceDocumentIssueDate) </div> 

产量:30/12/2011

相关链接:

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.displayformatattribute.applyformatineditmode.aspx

在MVC 4.0中试试这个

 @Html.TextBoxFor(m => m.YourDate, "{0:dd/MM/yyyy}", new { @class = "datefield form-control", @placeholder = "Enter start date..." }) 

对于Razor把文件DateTime.cshtml放在Views / Shared / EditorTemplates文件夹中。 DateTime.cshtml包含两行,并生成格式为9/11/2001的date的文本框。

 @model DateTime? @Html.TextBox("", (Model.HasValue ? Model.Value.ToShortDateString() : string.Empty), new { @class = "datePicker" }) 

一般来说,书面的月份是MMM,4位数年份yyyy,所以你的格式string应该看起来像“dd MMM yyyy”

 DateTime.ToString("dd MMM yyyy") 

下面的代码将帮助你

 @Html.Label(@item.Date.Value.ToString("dd - M - yy"))