[英]Dividing a time.Duration in Golang
目前,Go 中的time
包没有 'divide' 功能或类似的功能。 您可以将 time.Duration 除以其他值,但这需要进行大量转换。 有没有什么简单/明显的方法可以用 Go 中我没有看到的东西来划分 time.Duration? (我知道你可以除以一个数字常数,但我需要在动态基础上做。)我计划提交一个问题/功能请求,向time
包添加一个基本的“除法”函数,但我想要先在这里问,以防万一我错过了一些简单的方法来进行这种划分。
import "time"
为了避免夏令时时区转换之间的混淆,没有对 Day 或更大单位的定义。
要计算 Duration 中的单位数,请除以:
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 )
Duration 将两个瞬间之间经过的时间表示为 int64 纳秒计数。 该表示将最大可表示持续时间限制为大约 290 年。
type Duration int64
time.Duration
除法和乘法在 Go time
包文档中进行了描述。
如果除数是 2 的倍数,则可以使用 shift 代替,而无需进行任何强制转换:
package main
import (
"fmt"
"time"
)
func main() {
n := 1
d := time.Minute >> n
fmt.Println(d) // 30s
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.