如何使用模型绑定格式化DateTime

时间:2013-12-08 01:23:41

标签: asp.net entity-framework datetime webforms string-formatting

我在asp.net Web表单应用程序中使用实体框架,并使用代码块/指令绑定我的模型。我有一个DateTime字段 - ClosedDate - 我试图显示它与当前日期和时间之间的小时数,表示剩余小时数。它没有格式化它产生的值是正确的,我只是想改变格式。

剩余2小时30分钟,显示为2.50000000000000,我希望它显示为2或2.5。我尝试使用自定义格式字符串的toString(),但无法获得正确的值

守则

<%# Item.ClosedDate.Subtract(DateTime.Now).TotalHours%>

这会产生2.50000000000000

<%# Item.ClosedDate.Subtract(DateTime.Now).TotalHours.ToString("hh")%>

这会产生hh

<%# Item.ClosedDate.Subtract(DateTime.Now).ToString("hh")%>

这会生成02,这很好,但是当ClosedDate大于24小时时,该值不正确。

当ClosedDate = 2013-12-10 01:10:25.000 和DateTime.Now = 2013-12-07 20:20:00.000 时,产生的价值是04.

当ClosedDate = 2013-12-10 19:54:11.000 和DateTime.Now = 2013-12-07 20:20:00.000 时,产生的价值是23.

1 个答案:

答案 0 :(得分:2)

这里有几件事。这样:

Item.ClosedDate.Subtract(DateTime.Now).TotalHours

返回double,并且:

Item.ClosedDate.Subtract(DateTime.Now)

返回TimeSpan,而不是DateTime

因此,您一直在尝试将doubleTimeSpan格式化为小时"hh",但时间和日期格式说明符只能与{{1}一起使用结构。如果您只想要小时数与特定小数位数的差异,请使用内置或自定义数字格式来填充结果,例如:

DateTime

以上内容应将2.5显示为Item.ClosedDate.Subtract(DateTime.Now).TotalHours.ToString("#0.##"); ,将2.0显示为2.5

有关更多示例,请参阅MSDN上的Standard Numeric Format StringsCustom Numeric Format Strings文档。