我在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.
答案 0 :(得分:2)
这里有几件事。这样:
Item.ClosedDate.Subtract(DateTime.Now).TotalHours
返回double
,并且:
Item.ClosedDate.Subtract(DateTime.Now)
返回TimeSpan
,而不是DateTime
。
因此,您一直在尝试将double
或TimeSpan
格式化为小时"hh"
,但时间和日期格式说明符只能与{{1}一起使用结构。如果您只想要小时数与特定小数位数的差异,请使用内置或自定义数字格式来填充结果,例如:
DateTime
以上内容应将2.5显示为Item.ClosedDate.Subtract(DateTime.Now).TotalHours.ToString("#0.##");
,将2.0显示为2.5
。
有关更多示例,请参阅MSDN上的Standard Numeric Format Strings和Custom Numeric Format Strings文档。