如何更改MVC Razor代码中使用的时间格式?

时间:2012-07-23 15:17:24

标签: asp.net-mvc asp.net-mvc-3

在我的C#代码中,我的数据类型为

public DateTime? Created { get; set; }

在我的剃刀代码中,这打印为:

<td>@Model.Created</td>

5/23/2012 1:26:39 PM

我想将格式更改为:

5/23/2012 13:26

有人可以通过告诉我如何做到这一点来帮助我吗?

4 个答案:

答案 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")