2

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

public DateTime? Created { get; set; }

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

<td>@Model.Created</td>

5/23/2012 1:26:39 PM

我想将格式更改为:

5/23/2012 13:26

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

4

4 回答 4

2

您应该调用 toString 方法并将掩码传递给它

<td>@Model.Created.toString("dd/MM/yyyy HH:mm")</td>
于 2012-07-23T15:21:15.997 回答
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 确保在需要时用前导 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>
于 2012-07-23T15:19:51.997 回答
0
@Model.Created.HasValue? Model.Created.Value.ToString("M/d/yyyy H:mm") : "Not Created"
于 2012-07-23T15:21:00.940 回答
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") 
于 2012-07-23T16:26:49.823 回答