Cor*_*nie 25 .net vb.net formatting timespan
我正在使用.Net中的Timespans进行一些数学计算,偶尔总结会产生负时间跨度.当我显示结果时,我无法格式化它以包含负面指示器.
Dim ts as New Timespan(-10,0,0)
ts.ToString()
Run Code Online (Sandbox Code Playgroud)
这将显示"-10:00:00",这很好,但我不想显示秒,所以尝试了这个.
ts.ToString("hh\:mm")
Run Code Online (Sandbox Code Playgroud)
这将返回"10:00"并从前面删除" - ",这是问题的关键.我目前的解决方案是:
If(ts < TimeSpan.Zero, "-", "") & ts.ToString("hh\:mm")
Run Code Online (Sandbox Code Playgroud)
但我希望只使用格式字符串来完成同样的工作.
Wil*_*l A 14
我在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
Run Code Online (Sandbox Code Playgroud)
然后你可以称之为:
ts.HoursAndMinutes()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8102 次 |
| 最近记录: |