我的模型中有以下字段:
[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
为什么不显示AM / PM?
答案 0 :(得分:1)
从这MSDN article我提取了以下内容:
// 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
// '\Mon\t\h\: 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的输出是&#34; 06/20/2015 03:12:33 PM&#34;