从 Go 中的时间减去 time.Duration

新手上路,请多包涵

我有一个 time.Timetime.Now() 获得的值,我想得到另一个时间,正好是 1 个月前。

我知道可以使用 time.Sub() 进行减法(这需要另一个 time.Time ),但这将导致 time.Duration 我需要它。

原文由 Martijn van Maasakkers 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 834
2 个回答

尝试 添加日期

 package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now()

    fmt.Println("now:", now)

    then := now.AddDate(0, -1, 0)

    fmt.Println("then:", then)
}

生产:

 now: 2009-11-10 23:00:00 +0000 UTC
then: 2009-10-10 23:00:00 +0000 UTC

游乐场: http ://play.golang.org/p/QChq02kisT

原文由 lnmx 发布,翻译遵循 CC BY-SA 3.0 许可协议

作为对 Thomas Browne 评论的回应,因为 lnmx 的回答 只适用于减去日期,这里是他的代码的修改,适用于从 time.Time 类型中减去时间。

 package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now()

    fmt.Println("now:", now)

    count := 10
    then := now.Add(time.Duration(-count) * time.Minute)
    // if we had fix number of units to subtract, we can use following line instead fo above 2 lines. It does type convertion automatically.
    // then := now.Add(-10 * time.Minute)
    fmt.Println("10 minutes ago:", then)
}

生产:

 now: 2009-11-10 23:00:00 +0000 UTC
10 minutes ago: 2009-11-10 22:50:00 +0000 UTC

更不用说,您还可以根据需要使用 time.Hourtime.Second 而不是 time.Minute

游乐场:https: //play.golang.org/p/DzzH4SA3izp

原文由 cchio 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题