需要将timespan ADO.NET数据列格式化为AM / PM

时间:2012-08-22 17:43:59

标签: .net datetime ado.net

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

提前致谢。

1 个答案:

答案 0 :(得分:2)

  

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

这根本不是一种奇怪的格式。它是一段时间的ISO-8601格式,对于TimeSpan来说是相当合理的。

  

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

听起来你正在使用TimeSpan作为“一天中的时间”,这实际上并不理想。我知道这是DateTime.TimeOfDay给出的,但这只是因为框架没有“仅限时间”类型,运气更糟。

  

有没有人有不同的建议?

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

另一种方法是更改​​SQL查询以转换为日期/时间值,而不是在DataTable中进行。