使用razor转换DateTime格式

lea*_*ing 90 razor asp.net-mvc-3

以下是什么问题?

@Convert.ToDateTime((@item.Date.ToShortDateString())," dd - M - yy")
Run Code Online (Sandbox Code Playgroud)

@ item.Date正在显示20/11/2005 12:00 am我希望显示2011年11月20日

Dar*_*rov 249

尝试:

@item.Date.ToString("dd MMM yyyy")
Run Code Online (Sandbox Code Playgroud)

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

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

在您看来简单地说:

@Html.DisplayFor(x => x.Date)
Run Code Online (Sandbox Code Playgroud)

  • 如果希望将日期格式应用于EditorFor()元素,请记住在DisplayFormat定义中设置"ApplyFormatInEditMode = true". (9认同)
  • 我用文本框尝试了这个,不幸的是它没有用.有没有办法为文本框执行此操作? (3认同)
  • 对于文本框,只需使用EditorFor而不是DisplayFor (2认同)
  • 我需要将其用于日期时间字段才能使用内置日期选择器。如果没有 DisplayFormat 注释,浏览器中的 JavaScript 控制台将显示类似“指定值 '1/1/1990 12:00:00 AM' 不符合所需格式 'yyyy-MM-dd'” 的内容。我必须将 DataFormatString 和 ApplyFormatInEditMode 设置为 true,以便在 MVC 视图中使用 EditorFor 时错误消失并正确显示值。 (2认同)

Mir*_*lec 67

这是解决方案:

@item.Published.Value.ToString("dd. MM. yyyy")
Run Code Online (Sandbox Code Playgroud)

ToString()之前使用Value.

  • 此代码是正确的,但如果日期列为空,则会引发错误,因此请尝试[this](http://stackoverflow.com/a/29742649/2218697) (2认同)

小智 27

在MVC 4.0中试试这个

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

  • 我不知道为什么有人会拒绝这个答案. (2认同)
  • 这应该是选择的答案。我尝试了其他的,但没有一个有效。谢谢。 (2认同)

Dig*_*mar 18

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

模型:

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

视图:

        <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>
Run Code Online (Sandbox Code Playgroud)

产量:30/12/2011

相关链接:

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

  • 或者,您也可以使用 @string.Format("{0:MM yyyy}", imprint.VersionDate) (2认同)

Anj*_*ant 7

下面的代码将帮助您

@Html.Label(@item.Date.Value.ToString("dd - M - yy"))
Run Code Online (Sandbox Code Playgroud)


Jul*_*tow 5

对于 Razor,将文件 DateTime.cshtml 放在 Views/Shared/EditorTemplates 文件夹中。DateTime.cshtml 包含两行并生成一个日期格式为 9/11/2001 的 TextBox。

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