Ik heb een time.Time
waarde verkregen van time.Now()
en ik wil een andere tijd krijgen die precies 1 maand geleden is.
Ik weet dat aftrekken mogelijk is met time.Sub()
(die een andere time.Time
wil), maar dat zal resulteren in een time.Duration
en ik heb het andersom nodig.
Antwoord 1, autoriteit 100%
Als reactie op de opmerking van Thomas Browne, omdat het antwoord van lnmxalleen werkt voor het aftrekken van een datum, volgt hier een wijziging van zijn code die werkt voor het aftrekken van tijd van een tijd.Tijdtype.
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)
}
Produceert:
now: 2009-11-10 23:00:00 +0000 UTC
10 minutes ago: 2009-11-10 22:50:00 +0000 UTC
Om nog maar te zwijgen, je kunt ook time.Hour
of time.Second
gebruiken in plaats van time.Minute
, afhankelijk van je behoeften.
Speeltuin: https://play.golang.org/p/DzzH4SA3izp
Antwoord 2, autoriteit 86%
Probeer 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)
}
Produceert:
now: 2009-11-10 23:00:00 +0000 UTC
then: 2009-10-10 23:00:00 +0000 UTC
Speeltuin: http://play.golang.org/p/QChq02kisT
Antwoord 3, autoriteit 34%
U kunt een time.Duration
negeren:
then := now.Add(- dur)
Je kunt zelfs een time.Duration
vergelijken met 0
:
if dur > 0 {
dur = - dur
}
then := now.Add(dur)
Je kunt een werkend voorbeeld zien op http://play.golang.org/p/ml7svlL4eW
Antwoord 4
Er is time.ParseDuration
die met plezier negatieve duur accepteert, volgens handleiding. Anders gezegd, het is niet nodig om een duur te ontkennen waar u in de eerste plaats een exacte duur kunt krijgen.
Bijvoorbeeld als je anderhalf uur moet aftrekken, kun je dat als volgt doen:
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println("now:", now)
duration, _ := time.ParseDuration("-1.5h")
then := now.Add(duration)
fmt.Println("then:", then)
}