在我的 C# 代码中,我的数据类型为
public DateTime? Created { get; set; }
在我的剃刀代码中,这打印为:
<td>@Model.Created</td>
5/23/2012 1:26:39 PM
我想将格式更改为:
5/23/2012 13:26
有人可以告诉我如何做到这一点来帮助我吗?
在我的 C# 代码中,我的数据类型为
public DateTime? Created { get; set; }
在我的剃刀代码中,这打印为:
<td>@Model.Created</td>
5/23/2012 1:26:39 PM
我想将格式更改为:
5/23/2012 13:26
有人可以告诉我如何做到这一点来帮助我吗?
您应该调用 toString 方法并将掩码传递给它
<td>@Model.Created.toString("dd/MM/yyyy HH:mm")</td>
你当然可以使用
@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 确保在需要时用前导 0 填充 24 小时时钟。
如果Created可以为空,请确定并检查它是否为空并输出适当的内容。
您可以创建一个作用于可为空的 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>
@Model.Created.HasValue? Model.Created.Value.ToString("M/d/yyyy H:mm") : "Not Created"
如果您需要多次或全局执行此操作,您可以在 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")