2

我有一个 DataColulmn TimeSpan 类型的 DataTable。它在 SQL Server 查询中填充了一个时间列,并在屏幕上显示为 24 小时格式。我想使用表达式列将其显示为 12 小时格式 + 上午/下午,但无法做到。我尝试使用 convert to the column 来处理字符串,但它显示了一种奇怪的格式,例如 PT20H15(即 20:15 或 8:15 pm)。如果小时为一位或两位数,则时间和小时的位置会发生变化,如果小时为 00,则将其删除,字符串处理似乎太复杂了。我尝试仅比较“HourCol > 12”之类的列值,但这会引发关于将时间跨度与 int 进行比较的错误,因此我再次失败。有没有人有不同的建议?

提前致谢。

4

1 回答 1

2

它显示了一种奇怪的格式,例如 PT20H15

这根本不是一种奇怪的格式。它是一段时间内的 ISO-8601 格式,对于TimeSpan.

我想将其显示为 12 小时格式 + 上午/下午

这听起来像是您在TimeSpan“一天中的某个时间”使用 a,说实话,这远非理想。我知道这是DateTime.TimeOfDay给的,但这只是因为框架没有“仅限时间”类型,更糟糕的是运气。

有没有人有不同的建议?

你能有一个计算列,它基本上是一些固定日期(甚至DateTime.Today)+时间跨度值,并使用格式对其进行hh:mm tt格式化吗?(您是否可以自己手动覆盖 中的值DataTable,而不是使用计算表达式?)

另一种选择是更改您的 SQL 查询以转换为日期/时间值,而不是在DataTable.

于 2012-08-22T17:46:18.597 回答