MVC显示格式日期+时间

本文关键字:时间 日期 显示格式 MVC | 更新日期: 2023-09-27 18:20:10

我试图以以下格式显示日期:yyyy-MM-dd HH:mm,但它不起作用(当然yyyy-MM-dd工作得很好,问题是时间)

型号:

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

视图:

<div class="form-group">
        @Html.LabelFor(model => model.eventstart, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.eventstart, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.eventstart, "", new { @class = "text-danger" })
        </div>
</div>

MVC显示格式日期+时间

我假设您正在使用type="date"生成一个输入。有两个问题需要注意:

  1. 正如@JonSkeet所指出的,如果你想使用日期时间,那么你需要使用DataType.DateTime。这将导致输入被呈现为type="datetime"。对于"日期"类型的输入,任何时间组件都将被丢弃,往好里说或往坏里说都不允许正确解析浏览器日期控件的值,这就导致了:

  2. HTML5日期时间输入类型("datetime"、"date"、"time")要求值为ISO格式,即YYYY-MM-DDTHH:MM:SSZ。浏览器控件将基于解析ISO格式的日期,以用户的本地格式显示日期/时间,但必须首先以ISO格式为其提供值。如果不是,则将其视为null,并将输入值显示为空。

更改:

@Html.EditorFor(model => model.eventstart, 
                new { htmlAttributes = new { @class = "form-control" } })

收件人:

@Html.EditorFor(model => model.eventstart, 
                new { htmlAttributes = new { @class = "form-control", @type="date" } })

当然可以。