限制持续时间粒度

时间:2019-04-27 22:11:09

标签: go

我已经通过从当前时间中减去保存的时间来计算持续时间: time.Now().Sub(oldTime)

打印它可以给我这个: 1m30.789260489s

在我使用的地方,1m30.79s看起来会更好。如何截断/减小Go中Duration的粒度?

1 个答案:

答案 0 :(得分:1)

  

Package time

import "time"
     

func (Duration) Round 1.9

     

func (d Duration) Round(m Duration) Duration

     

Round返回将d舍入到m的最接近倍数的结果。   中途值的舍入行为是从零舍入。   如果结果超过最大(或最小)值,则可以   存储在Duration中,Round返回最大(或最小)持续时间。   如果m <= 0,则Round不变地返回d。

     

func (Duration) Truncate 1.9

     

func (d Duration) Truncate(m Duration) Duration

     

Truncate将d朝零舍入的结果返回到的倍数   米如果m <= 0,则Truncate不变地返回d。


Round上使用Truncatetime.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