繁体   English   中英

划分时间。 Golang 中的 Duration

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM