我已经通过从当前时间中减去保存的时间来计算持续时间:
time.Now().Sub(oldTime)
打印它可以给我这个:
1m30.789260489s
在我使用的地方,1m30.79s看起来会更好。如何截断/减小Go中Duration的粒度?
答案 0 :(得分:1)
import "time"
func (d Duration) Round(m Duration) Duration
Round返回将d舍入到m的最接近倍数的结果。 中途值的舍入行为是从零舍入。 如果结果超过最大(或最小)值,则可以 存储在Duration中,Round返回最大(或最小)持续时间。 如果m <= 0,则Round不变地返回d。
func (d Duration) Truncate(m Duration) Duration
Truncate将d朝零舍入的结果返回到的倍数 米如果m <= 0,则Truncate不变地返回d。
在Round
上使用Truncate
或time.Duration
方法。
例如,
package main
import (
"fmt"
"time"
)
func main() {
d, err := time.ParseDuration("1m30.789260489s")
if err != nil {
panic(err)
}
fmt.Println(d)
fmt.Println(d.Round(10 * time.Millisecond))
}
游乐场:https://play.golang.org/p/8b3xAxfSE90
输出:
1m30.789260489s
1m30.79s