问题描述
我使用的是 ASP.Net Core MVC 5.0
我想格式化日期时间?字段,以便它省略时间部分,只显示日期。
[displayFormat(ApplyFormatInEditMode = true,DataFormatString = "{0:dd/MMM/yyyy}")]
public DateTime? NextrenewalDueAt { get; set; }
但它仍然显示时间部分 - 01/02/2021 00:00:00
我显示 -
Registered on: @Model.Place.NextrenewalDueAt
我怎样才能摆脱时间部分?
谢谢
解决方法
看起来您不需要设置ApplyFormatInEditMode = true
,因为它只是一个显示日期。因此,您可以尝试以下选项:
-
Html.DisplayFor
注册于:@Html.DisplayFor(m => m.NextRenewalDueAt)
-
在视图上格式化
@{ var tempDate = Model.Place.NextRenewalDueAt.HasValue ? Model.Place.NextRenewalDueAt.ToShortDateString() : ""; }
注册日期:@tempDate
Registered on: @Model.Place.NextRenewalDueAt
格式化字符串仅在绑定数据绑定控件的值时应用于字段值(例如:Html Helper: EditorFor()
and DisplayFor()
,Asp.net Core Tag Helpers: Input) .通过使用上面的代码,您只是从模型中获取日期,而不绑定到数据绑定控件,因此,它将显示原始格式(例如: 6/3/2021 2:29:23 PM
)。
要解决这个问题,您可以使用以下方法:
-
使用 Html.DisplayFor() 方法:
@Html.DisplayFor(m => m.NextRenewalDueAt)
-
更改视图中的日期格式。
注册日期:
@(Model.Place.NextRenewalDueAt.HasValue ? Model.Place.NextRenewalDueAt.Value.ToString("dd/MMM/yyyy") : "")
-
使用输入标签助手:
<input asp-for="NextRenewalDueAt" class="form-control" type="text" readonly/>
[注意] 因为,输入标签助手根据 .NET 类型设置 HTML 类型属性。要格式化日期时间数据类型,我们应该将
type
属性设置为text
,否则将使用type="datetime-local"
。更多详细信息,请参阅The Input Tag Helper。