我目前正在处理一个项目,但我在一个返回startTime
呼叫的函数中遇到问题。这是我的代码:
func (bt *Hc34) getStartDate(endTime time.Time, duration int) time.Time {
startTime := endTime
startTime.Second = endTime.Second - duration
return startTime
}
我收到了这个错误:
beater/hc34.go:268: invalid operation: endTime.Second - duration (mismatched types func() int and int)
beater/hc34.go:268: cannot assign to startTime.Second
答案 0 :(得分:2)
time.Time
没有导出字段Second
,因此startTime.Second
无效。
您可以使用Time.Add()
方法将time.Duration
值添加到time.Time
值。要从中减去持续时间,只需将您添加的值乘以-1
。
func (bt *Hc34) getStartDate(endTime time.Time, duration int) time.Time {
return endTime.Add(time.Duration(-duration) * time.Second)
}
getStartDate()
函数示例(非方法):
now := time.Now()
fmt.Println(now)
fmt.Println(getStartDate(now, 60))
Go Playground上的输出:
2009-11-10 23:00:00 +0000 UTC
2009-11-10 22:59:00 +0000 UTC
我还建议您阅读有关使用从整数构建的time.Duration
值的答案:Conversion of time.Duration type microseconds value to milliseconds