使用剃刀转换日期时间格式

下面这些有什么问题吗?

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

@item.Date is showing 20/11/2005 12:00 a.m and I want to display 20 Nov 2011

343478 次浏览

试试:

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

or you could use the [DisplayFormat] attribute on your view model:

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

在你看来:

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

通常,写入的月份转义为 MMM,4位数的年份转义为 yyyy,因此格式字符串应该类似于“ dd MMM yyyy”

DateTime.ToString("dd MMM yyyy")

这就是解决办法:

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

ToString ()之前使用 价值

[ 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>

产出: 2011年12月30日

相关链接:

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

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

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

在 MVC 4.0中试试这个

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

下面的代码将帮助您

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

对于所有给定的解决方案,当您在现代浏览器(如 FF)中尝试这种方法时,您已经设置了正确的模型

// Model
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime Start { get; set; }


// View
<div class="form-group">
@Html.LabelFor(model => model.Start, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Start, "{0:dd-MM-yyyy}", new { htmlAttributes = new { @class = "form-control"} })
</div>
</div>

Mvc (5)将呈现(输入的 type根据模型中的日期设置设置为 date!)

<div class="col-md-10">
<input class="form-control text-box single-line" data-val="true" data-val-date="The field Start must be a date." data-val-required="The Start field is required." id="Start" name="Start" value="01-05-2018" type="date">
<span class="field-validation-valid text-danger" data-valmsg-for="Start" data-valmsg-replace="true"></span>
</div>

浏览器会显示

enter image description here

为了解决这个问题,您需要将 类型改为 短信而不是日期(如果您想使用自定义日历也是如此)

@Html.EditorFor(model => model.Start, "{0:dd-MM-yyyy}", new { htmlAttributes = new { @class = "form-control", @type = "text" } })

我不能让这个工作完全基于上面的建议。包含 DataTypeAttribute [DataType(DataType.Date)]似乎解决了我的问题,参见:

模特

[Required]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
public DateTime RptDate { get; set; }

观景

@Html.EditorFor(m => m.CLPosts.RptDate)

高温

基于 Anjan Kant 上面所说的,这就是我想出来的(本来可以给你一个更高的评价,但是我太新了)

@if (Model.Quotes != null)
{
foreach (var item in Model.Quotes)
{
<tr class="code-black">
<td class="td">
@Html.Label(@item.CreateDate.ToShortDateString())
</td>
<td class="td">
@Html.DisplayFor(modelItem => item.Status)
</td>
<td class="td">
@Html.DisplayFor(modelItem => item.ProjectName)
</td>
<td class="td usd">
@Html.DisplayFor(modelItem => item.Total)
</td>
<td class="td">
<a asp-page="../Quote/Details" asp-route-
id="@item.Id">View</a>
</td>
</tr>
}
}

更改日期类型的简单方法,例如:

   [DataType(DataType.Date)]
public DateTime? DataEurGbp { get; set; }

我在另一个问题的回答中使用了这个方法,效果非常好:
@ (item. Startdate. HasValue? item. Startdate. Value.ToString (“ dd/MM/yyyy”) : “ Date is Empty”)

如果 date 列为 null,Value.ToString 将抛出错误,因此我们使用条件语句

inspired from answers by @miroslav-holec and @shaiju-t