如何在Razor视图中格式化DateTime?

时间:2011-11-06 09:11:05

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

我有变量:

DateTime crd = a.CreationDate; (shown as a variable in C# but available in razor views)

我想使用以下格式将这些显示为日期:11/06/2011 02:11

理想情况下,我想为此提供某种HTML帮助程序。那里的任何人都有可能满足我需求的东西吗?

7 个答案:

答案 0 :(得分:20)

您可以像this answer一样创建显示模板或编辑器模板,但格式将适用于给定范围内的所有DateTime变量(可能是好的或坏的)。

使用DisplayFormat属性可以很好地定义各个字段的格式。

请务必使用@Html.DisplayFor(model=>model.crd)和/或@Html.EditorFor(model=>model.crd)语法进行上述任何一项。

您始终可以在视图中使用DateTime.ToString()方法以进行更多临时格式化。

@crd.ToString("MM/dd/yyyy HH:mm") // time using a 24-hour clock

答案 1 :(得分:16)

在您的模型中,您可以根据需要设置[DisplayFormat]属性格式

[DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")]
pubilc DateTime CreationDate{ get; set }

答案 2 :(得分:3)

怎么样

  

@ crd.ToShortDateString()

答案 3 :(得分:3)

使用此代码格式化您的日期:

@string.Format("{0:ddd}",Convert.ToDateTime(Html.DisplayFor(model => model.Booking.BookingFromDate).ToString()))

如果您的日期字段包含必需属性,那么您不想验证null值。 另外,你可以使用三元运算符

答案 4 :(得分:1)

尝试Razor View

@ Html.Raw(item.Today_Date.Date.ToString(“ dd.MM.yyyy”))

答案 5 :(得分:0)

出于完整性考虑,还可以使用字符串插值。提出此问题时,我认为这不是可用的功能。

@($"{crd:dd/mm/yyyy HH:mm}")

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated

答案 6 :(得分:-2)

如果你有一个日期列表,并想抓住第一个:

Begin Date: @string.Format("{0:MM/dd/yyyy}", Convert.ToDateTime(Model.aList.Where(z => z.Counter == 1).Select(z => z.Begin_date).First()))