在我的C#代码中,我的数据类型为
public DateTime? Created { get; set; }
在我的剃刀代码中,这打印为:
<td>@Model.Created</td>
5/23/2012 1:26:39 PM
我想将格式更改为:
5/23/2012 13:26
有人可以通过告诉我如何做到这一点来帮助我吗?
答案 0 :(得分:1)
你当然可以使用
@Model.Created.Value.ToString(myFormat);
其中 myFormat 是格式字符串
http://msdn.microsoft.com/en-us/library/az4se3k1.aspx
http://msdn.microsoft.com/en-us/library/8kb3ddd4
对于您要查找的特定格式,请尝试 myFormat 字符串“MM / dd / yyyy HH:mm”。具体来说,“H”将为您提供24小时制,而不是上午/下午格式化。如果需要,HH确保24小时时钟填充前导0。
如果 Created 可以为null,请确保检查是否为正确并输出适当的内容。
您可以创建一个作用于可为空的DateTime的扩展方法,如果值为null则输出适当的内容,否则应用应用格式的DateTime。
public static IHtmlString DateFormatted(this HtmlHelper htmlHelper, DateTime? dateTime, string format = "MM/dd/yyyy HH:mm")
{
string formatted = dateTime.HasValue ? dateTime.Value.ToString(format) : ("(null)");
return new HtmlString(formatted);
}
使用像这样的扩展方法
<td>@Html.DateFormatted(Model.Created)</td>
答案 1 :(得分:1)
你应该调用toString方法并将掩码传递给它
<td>@Model.Created.toString("dd/MM/yyyy HH:mm")</td>
答案 2 :(得分:0)
@Model.Created.HasValue? Model.Created.Value.ToString("M/d/yyyy H:mm") : "Not Created"
答案 3 :(得分:0)
如果您需要多次或全局执行此操作,可以在Shared / DisplayTemplates文件夹中创建DateTime.cshtml模板,并使其包含其他答案中显示的格式字符串。例如:
@model System.DateTime?
@(Model.HasValue ? Model.Value.ToString("M/d/yyyy H:mm") : "Undefined")
你会称之为:
@Html.DisplayFor(m => m.Created)
这样可以避免在任何需要的地方指定它。这将更改所有日期的默认格式。如果您不想这样做,即使您只使用两次或更多,也可能仍然值得使用模板,以便您可以在必要时在一个地方更改它。在这种情况下,将模板名称更改为“ShortDateTime”,并将其命名为:
@Html.DisplayFor(m => m.Created, "ShortDateTime")