我有一个DataTable,其DataColulmn属于TimeSpan类型。它在SQL Server查询中填充了一个时间列,并在屏幕上显示为24小时格式。我想使用表达式列将其显示为12小时格式+上午/下午,但是不能这样做。 我尝试使用转换为列来处理字符串,但它显示了一种奇怪的格式,如PT20H15(即20:15或8:15 pm)。如果小时是一位或两位数,时间和小时的位置会发生变化,如果小时为00则会被删除,字符串处理似乎太复杂了。我尝试比较像“HourCol> 12”这样的列值,但是这会引起有关将时间跨度与int进行比较的错误,所以我再次失败了。有人有不同的建议吗?
提前致谢。
答案 0 :(得分:2)
它显示了一种奇怪的格式,例如PT20H15
这根本不是一种奇怪的格式。它是一段时间的ISO-8601格式,对于TimeSpan
来说是相当合理的。
我想将其显示为12小时格式+上午/下午
听起来你正在使用TimeSpan
作为“一天中的时间”,这实际上并不理想。我知道这是DateTime.TimeOfDay
给出的,但这只是因为框架没有“仅限时间”类型,运气更糟。
有没有人有不同的建议?
你有一个基本上是某个固定日期(甚至是DateTime.Today
)+时间跨度值的计算列,以及使用hh:mm tt
格式的格式吗? (您是否可以自己在DataTable
中手动覆盖值,而不是使用计算表达式?)
另一种方法是更改SQL查询以转换为日期/时间值,而不是在DataTable
中进行。