Вычитание времени. Время от времени в Go
У меня есть значение time.Time
, полученное из time.Now()
, и я хочу получить другое время, которое ровно месяц назад.
Я знаю, что вычитание возможно с помощью time.Sub()
(который хочет другой time.Time
), но это приведет к time.Duration
, и мне это нужно наоборот.
Ответы
Ответ 1
Попробуйте 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
Ответ 2
В ответ на комментарий Томаса Брауна, потому что lnmx answer работает только для вычитания даты, здесь есть модификация его кода, который работает для вычитания времени с момента времени. Тип времени.
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println("now:", now)
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
Ответ 3
Вы можете отменить time.Duration
:
then := now.Add(- dur)
Вы даже можете сравнить time.Duration
с 0
:
if dur > 0 {
dur = - dur
}
then := now.Add(dur)
Вы можете увидеть рабочий пример в http://play.golang.org/p/ml7svlL4eW