我的模型中有以下字段:
[DataType(DataType.Time)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:hh:mm:ss tt}")]
public DateTime TimeFrom { get; set; }
在我看来,使用以下代码:
@Html.DisplayFor(modelItem => item.TimeFrom)
但是当我启动应用程序时,它显示的只是例如 01:00:00
为什么它不显示上午/下午?
从这篇MSDN文章中,我提取了以下内容:
// This example displays the following output to the console:
// d: 6/15/2008
// D: Sunday, June 15, 2008
// f: Sunday, June 15, 2008 9:15 PM
// F: Sunday, June 15, 2008 9:15:07 PM
// g: 6/15/2008 9:15 PM
// G: 6/15/2008 9:15:07 PM
// m: June 15
// o: 2008-06-15T21:15:07.0000000
// R: Sun, 15 Jun 2008 21:15:07 GMT
// s: 2008-06-15T21:15:07
// t: 9:15 PM
// T: 9:15:07 PM
// u: 2008-06-15 21:15:07Z
// U: Monday, June 16, 2008 4:15:07 AM
// y: June, 2008
//
// 'h:mm:ss.ff t': 9:15:07.00 P
// 'd MMM yyyy': 15 Jun 2008
// 'HH:mm:ss.f': 21:15:07.0
// 'dd MMM HH:mm:ss': 15 Jun 21:15:07
// 'Month: M': Month: 6
// 'HH:mm:ss.ffffzzz': 21:15:07.0000-07:00
基于此,您似乎只需要以下内容:
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:T}")]
获取"9:15:07 PM"作为输出。警告:我还没有测试过这个以确保它有效。
我也不确定为什么你拥有的"tt"没有得到尊重。您是否尝试过使用属性将值写入代码以确保其正常工作?
string formattedString = myObject.TimeFrom.ToString("{0:hh:mm:ss tt}");
这可能有助于您获得见解,以确保您拥有正确的格式字符串。
更新
我刚刚对我的一个日期字段进行了测试,并将其更改为具有以下内容的时间字段:
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy hh:mm:ss tt}", ApplyFormatInEditMode = true)]
[DataType(DataType.Time)]
public DateTime LastInventory { get; set; }
DateTime.Now 的输出为"06/20/2015 03:12:33 PM"