Ulr*_*rdt 13 time data-conversion go
我有一个float64包含以秒为单位的持续时间。我正在寻找一种方法将此值转换为time.Duration. 我能够执行此转换,但我想知道是否没有更优雅的方法。
我的方法是这样的:
var timeout float64 // input value of float type
var res time.Duration // result value of time.Duration type
res += time.Duration(math.Round(timeout)) * time.Second
timeout -= math.Round(timeout)
timeout *= 1000
res += time.Duration(math.Round(timeout)) * time.Millisecond
timeout -= math.Round(timeout)
timeout *= 1000
res += time.Duration(math.Round(timeout)) * time.Microsecond
timeout -= math.Round(timeout)
timeout *= 1000
res += time.Duration(math.Round(timeout)) * time.Nanosecond
return res
Run Code Online (Sandbox Code Playgroud)
我不喜欢的是它很麻烦而且不可靠。我希望 Go 能够开箱即用地提供类似的东西,并以检测溢出和类似范围违规的方式执行这些转换。似乎Go 还没有出现,但也许我错过了一些明显的东西,因此我的问题。
笔记:
小智 26
正如JimB 的评论所示,将秒数乘以每秒的持续时间单位数。持续时间以纳秒为单位测量,但您的代码不需要知道该细节。
return time.Duration(timeout * float64(time.Second))
Run Code Online (Sandbox Code Playgroud)
转换为浮点数进行乘法,然后转换为持续时间以获得结果。
| 归档时间: |
|
| 查看次数: |
23689 次 |
| 最近记录: |