上午/下午没有显示

时间:2015-06-20 20:01:16

标签: asp.net-mvc datetime

我的模型中有以下字段:

[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?

1 个答案:

答案 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;