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