我正在尝试计算 10 分钟前的时间。为什么我不能用变量进行这个计算(可用于 for 循环)。看 -package mainimport ( "fmt" "time")func main() { // the time now fmt.Println(time.Now()) // the time 50 minutes ago - WORKS diff := (60 - 10) * time.Minute newTime := time.Now().Add(-diff) fmt.Println(newTime) // the time 50 minutes ago - DOESN'T WORKS! i := 10 diff = (60 - i) * time.Minute newTime = time.Now().Add(-diff) fmt.Println(newTime)}为什么diff = (60 - i) * time.Minute不起作用?这是我得到的错误 -prog.go:20: invalid operation: (60 - i) * time.Minute (mismatched types int and time.Duration)去游乐场:https : //play.golang.org/p/TJ03K0ULg2
2 回答

慕勒3428872
TA贡献1848条经验 获得超6个赞
就像错误所说的那样,您的类型不匹配。将整数结果转换为 a time.Duration
:
diff = time.Duration(60-i) * time.Minute

狐的传说
TA贡献1804条经验 获得超3个赞
time.Duration实际上是类型int64,所以如果你想使用变量来制作你想要的东西,只需将变量声明为time.Duration,就像这样:
package main
import (
"fmt"
"time"
)
func main() {
// the time now
fmt.Println(time.Now())
// the time 50 minutes ago - WORKS
diff := (60 - 10) * time.Minute
newTime := time.Now().Add(-diff)
fmt.Println(newTime)
// the time 50 minutes ago - DOESN'T WORKS!
var i time.Duration
diff = (60 - i) * time.Minute
newTime = time.Now().Add(-diff)
fmt.Println(newTime)
}
- 2 回答
- 0 关注
- 144 浏览
添加回答
举报
0/150
提交
取消