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

Asp.net mvc 如何更改MVC Razor代码中使用的时间格式?,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,在我的C代码中,我有一个数据类型 public DateTime? Created { get; set; } 在我的razor代码中,它打印为: <td>@Model.Created</td> 5/23/2012 1:26:39 PM 有人能告诉我怎么做吗?你当然可以用 @Model.Created.Value.ToString(myFormat); 其中myFormat是一个格式字符串 对于要查找的特定格式,请尝试myFormat字符串“MM/dd/yyy

在我的C代码中,我有一个数据类型

public DateTime? Created { get; set; }
在我的razor代码中,它打印为:

<td>@Model.Created</td>

5/23/2012 1:26:39 PM
有人能告诉我怎么做吗?

你当然可以用

@Model.Created.Value.ToString(myFormat);
其中myFormat是一个格式字符串

对于要查找的特定格式,请尝试myFormat字符串“MM/dd/yyyy HH:MM”。特别是“H”将为您提供24小时时钟,而不是am/pm格式。HH确保24小时时钟在需要时用前导0填充

如果Created可以为null,请确保并检查它是否为null,并输出适当的内容

您可以创建一个作用于可为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>
@Html.DateFormatted(Model.Created)

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

<td>@Model.Created.toString("dd/MM/yyyy HH:mm")</td>
@Model.Created.toString(“dd/MM/yyyy HH:MM”)

如果需要多次或全局执行此操作,可以在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") 

错误CS1501:方法“ToString”没有重载1arguments@Anne你试过那个最新版本吗?我添加了
.Value
。错误CS1061:“System.Nullable”不包含“toString”的定义,并且找不到接受“System.Nullable”类型的第一个参数的扩展方法“toString”(是否缺少using指令或程序集引用?)我认为这将崩溃,因为它将在Nullable上使用
ToString
,而Nullable没有接受字符串的重载。您应该检查@Model.Created是否为null。像尤里·法克托洛维奇·苏格斯特德
@Html.DisplayFor(m => m.Created) 
@Html.DisplayFor(m => m.Created, "ShortDateTime")