Avatar ·

从 time.Time 中减去 time.Duration:如何正确操作?

大家好!我刚开始学习 Go,在处理日期和时间时遇到了问题。我需要从当前时间减去,例如 24 小时,得到“昨天同一时间”。我写了类似这样的代码: ```go package main import ( "fmt" "time" ) func main() { now := time.Now() yesterday := now - 24 * time.Hour // 错误! fmt.Println(yesterday) } ``` 但编译器报错:`invalid operation: operator - not defined on time.Time`。我明白 `time.Time` 是一个结构体,不是数字,不能直接相减。我尝试使用 `time.Duration`,但搞混了。文档说 `time.Time` 可以和 `time.Duration` 相加,但如何正确相减?我需要得到精确的值,以便之后与其他日期比较。请告诉我如何在 Go 中正确地从时间中减去一个间隔?提前感谢! <<>>

使用 Add() 方法并传入负值

在 Go 中,要从 time.Time 中减去一个持续时间,可以使用 time.Time 的 Add() 方法,并传入负的 time.Duration。例如:

yesterday := now.Add(-24 * time.Hour)

或者使用 time.Time 的 Sub() 方法计算两个时间之间的差值,但减法操作本身推荐使用 Add() 加负值。