J'ai une valeur time.Time
Obtenue à partir de time.Now()
et je souhaite obtenir une autre heure, il y a exactement 1 mois.
Je sais que la soustraction est possible avec time.Sub()
(qui veut un autre time.Time
), Mais cela donnera un time.Duration
Et j'en ai besoin dans l'autre sens.
Essayez 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)
}
Produit:
now: 2009-11-10 23:00:00 +0000 UTC
then: 2009-10-10 23:00:00 +0000 UTC
Aire de jeux: http://play.golang.org/p/QChq02kisT
En réponse au commentaire de Thomas Browne, parce que réponse de lnmx ne fonctionne que pour soustraire une date, voici une modification de son code qui fonctionne pour soustraire heure à un type heure.Heure.
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)
}
Produit:
now: 2009-11-10 23:00:00 +0000 UTC
10 minutes ago: 2009-11-10 22:50:00 +0000 UTC
Sans oublier, vous pouvez aussi utiliser time.Hour
ou time.Second
au lieu de time.Minute
selon vos besoins.
Aire de jeux: https://play.golang.org/p/DzzH4SA3izp
Vous pouvez nier un time.Duration
:
then := now.Add(- dur)
Vous pouvez même comparer un time.Duration
contre 0
:
if dur > 0 {
dur = - dur
}
then := now.Add(dur)
Vous pouvez voir un exemple de travail sur http://play.golang.org/p/ml7svlL4eW