Вычитание времени.Продолжительность от времени в Go
у меня есть time.Time
значением, полученным из time.Now()
и я хочу еще раз это ровно 1 месяц назад.
Я знаю, что вычитание можно с time.Sub()
(который хочет еще time.Time
), но это приведет к time.Duration
и мне это нужно наоборот.
3 ответа:
попробовать AddDate:
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 работает только для вычитания даты, вот модификация его кода, который работает для вычитания времени из времени.Тип времени.
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.Hour
илиtime.Second
вместоtime.Minute
согласно вашим потребностям.детская площадка:https://play.golang.org/p/DzzH4SA3izp
вы можете отрицать a
time.Duration
:then := now.Add(- dur)
вы даже можете сравнить
time.Duration
против0
:if dur > 0 { dur = - dur } then := now.Add(dur)
вы можете увидеть рабочий пример на http://play.golang.org/p/ml7svlL4eW