我试图以dd MMM yyyy的形式格式化我的日期,但我总是得到美国格式mm / dd / yyyy。 我在我的ViewModel中添加了数据注释,如列出的here,但我仍然有问题。我甚至尝试过没有成功的前标签助手(TextBoxFor):
视图模型
[DataType(DataType.Date, ErrorMessage = "Date only")]
[DisplayName("Date to"), DisplayFormat(DataFormatString = "{0:dd MMM yyyy}", ApplyFormatInEditMode = true)]
public virtual DateTime? date_to { get; set; }
查看
<label asp-for="date_to" class="col-md-2 control-label"></label>
<div class="col-md-4">
@*@Html.TextBoxFor(x => x.date_to, new { @class = "form-control datepicker", placeholder = "Sampling date to" })*@
<input type="datetime" asp-for="date_to" class="form-control datepicker" placeholder="Sampling date to"/>
</div>
感谢您的帮助
我正在使用ASP.Net Core 1.1.0
西尔
答案 0 :(得分:0)
您应该使用EditorFor,默认情况下应该呈现TextBox(如果不是,您可以将自己的编辑器放入)。 EditorFor应该尊重你的DataFormatString(TextBoxFor没有)。
答案 1 :(得分:0)
您可以使用ParseExact()
来获得预期的格式。
假设您的格式string.Format("{0} {1}", Date, Time)
格式为DD/MM/YYYY hh:mm tt
,例如07/05/2017 12:00 PM
,那么您可以按照
DateTime.ParseExact(string.Format("{0} {1}", Date, Time),
"DD/MM/YYYY hh:mm tt", CultureInfo.InvariantCulture);