格式化否定的TimeSpan
我正在使用.Net中的Timespans进行一些数学计算,偶尔会得出一个负的Timespan。 当我显示结果时,我无法格式化它以包含负面指标。
Dim ts as New Timespan(-10,0,0)
ts.ToString()
这将显示“-10:00:00”,这很好,但我不想显示如此尝试的秒数。
ts.ToString("hh:mm")
这返回“10:00”,并从正面解决问题的核心 - “ - ”。 我目前的解决方案是:
If(ts < TimeSpan.Zero, "-", "") & ts.ToString("hh:mm")
但我希望通过仅使用格式字符串来完成相同的操作。
我在TimeSpan.ToString(...)上使用了.Net Reflector,它看起来不像它支持任何形式的自定义格式的负面前缀 - 所以我认为在获取它时你运气不佳像上面一样为你工作。 :(
看起来你被这个代码困住了,但如果是这样的话,这似乎是编写extesion方法的好时机,这样你可以使代码更清晰,并且不必在多个地方重复该代码,所以就像是:
Module Extensions
<System.Runtime.CompilerServices.Extension()> _
Public Function HoursAndMinutes(ByVal ts As TimeSpan) As String
Return If(ts < TimeSpan.Zero, "-", "") & ts.ToString("hh:mm")
End Function
End Module
然后你可以把它称为:
ts.HoursAndMinutes()
我同意威尔。 MSDN和Reflector都表示你运气不好。 最好的办法是使用你所拥有的,编写你自己的IFormatProvider,或者使用像g这样的时间标准格式之一。
链接地址: http://www.djcxy.com/p/18503.html