【问题标题】:How to format DateTime using model binding如何使用模型绑定格式化 DateTime
【发布时间】:2013-12-25 06:33:26
【问题描述】:

我在 asp.net 网络表单应用程序中使用实体框架,并使用代码块/指令绑定我的模型。我有一个 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.

【问题讨论】:

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


    【解决方案1】:

    这里有几件事。这个:

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

    返回一个double,这是:

    Item.ClosedDate.Subtract(DateTime.Now)
    

    返回TimeSpan,而不是DateTime

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

    Item.ClosedDate.Subtract(DateTime.Now).TotalHours.ToString("#0.##");
    

    以上内容应将 2.5 显示为 2.5,将 2.0 显示为 2

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-07
      • 2018-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 2023-03-18
      相关资源
      最近更新 更多