在Golang中划分时间

时间:2019-02-20 00:41:24

标签: go

目前,Go中的time包没有“除法”功能或类似功能。您可以将time.Duration除以其他值,但这需要大量的转换。是否有任何简单/明显的方式来划分时间.Duration用Go中没有看到的东西? (我知道您可以除以数字常数,但是我需要动态地进行除数。)我正计划提交一个问题/功能请求,以向time包中添加基本的“除法”功能,但是我想先在这里问一下,以防我缺少一些简单的方法来进行这种划分。

2 个答案:

答案 0 :(得分:2)

  

Package time

import "time" 
     

对于天或更大的单位,没有定义以避免混淆   跨夏时制时区转换。

     

要计算持续时间中的单位数,请除以

second := time.Second
fmt.Print(int64(second/time.Millisecond)) // prints 1000
     

要将整数单位转换为持续时间,请乘以:

seconds := 10
fmt.Print(time.Duration(seconds)*time.Second) // prints 10s

const (
        Nanosecond  Duration = 1
        Microsecond          = 1000 * Nanosecond
        Millisecond          = 1000 * Microsecond
        Second               = 1000 * Millisecond
        Minute               = 60 * Second
        Hour                 = 60 * Minute
)
     

type Duration

     

持续时间表示两个瞬间之间的经过时间,   int64纳秒计数。代表性限制最大   可表示的持续时间约为290年。

type Duration int64

time.Duration软件包的文档中介绍了time的除法和乘法。

答案 1 :(得分:1)

如果除数是二的倍数,你可以用移位代替,不用任何 铸造:

package main

import (
   "fmt"
   "time"
)

func main() {
   n := 1
   d := time.Minute >> n
   fmt.Println(d) // 30s
}